日の数学の悪いサポートされており、非常に不正確に思えます。 Flexは抜け出しの際の言語かもしれませんが、後世のやり方のために残っているコードについては、受け入れられた答えをuser1196374で使用しないでください。彼らの答えは大まかで不正確です。
以下、私はこの目標を実行するために開発したコードを含めました。このコードは、このポストで最初にコードを出発点として使用していました。
免責事項、これは前の機能のすべての欠陥を網羅しているのかどうか、他のカレンダーをうまく処理できるかどうかはわかりません。しかし、それは受け入れられた答えよりもはるかに良い解決策です。
public static function dateDiff(dateA:Date, dateB:Date): int{
var retVal:int = 0;
if(dateA != null && dateB!=null) {
retVal = roughDateDiff(toMidnightFromUTCDate(dateA),toMidnightFromUTCDate(dateB));
}
return retVal;
}
private static function roughDateDiff(dateA:Date, dateB:Date): int{
var retVal:int = 0;
if(dateA != null && dateB!=null){
if(dateA.time > dateB.time){
var dateDiff:Number = dateA.time - dateB.time;
retVal = Math.floor((dateDiff/86400000));
}else{
var dateDiff:Number = dateB.time - dateA.time;
retVal = Math.floor((dateDiff/86400000));
}
}
return retVal;
}
private static function toMidnightFromUTCDate(pre:Date):Date{
var post:Date = new Date(pre.toUTCString());
post.setUTCHours(0);
post.setUTCMinutes(0);
post.setUTCSeconds(0);
post.setUTCMilliseconds(0);
return post;
}
友人に感謝します。わずかな変更とその働きf9 .added 2つの変数private var dateDiff:Number = 0; \t \t \t [Bindable] private var daysDiff:String;そして、いくつかのコードの変更:保護機能datechooser_changeHandler(イベント:CalendarLayoutChangeEvent):DATEDIFF =新しい日付(dChs1.selectedDate).time \t \t \t \t \t \t \t \t \t \t \t { ボイド - 新しい日付(dChs2.selectedDate)。時間; \t \t \t \t daysDiff =(Math.round((dateDiff/86400000))。toString()); \t \t \t} – developer