比較する必要がある2つの瞬間をオフセット:Moment.js .isBefore比較する日付がある
- 今日今ある時間帯に(水曜日2016年10月12日8時42分19秒GMT + 0000)
カレンダー(例えば2016年10月11日)から選択した日付がここ
が、私はそれを働いている方法です:
var date = '2016/10/12'; // october 11
var offset = '0'; // time zone offset in minutes, 0 = GMT
var dateToday = moment().utcOffset(offset); // get a moment now with the time zone offset
var selectedDate = moment(date, ["YYYY-MM-DD"]).utcOffset(offset); // and a moment that is the date of the day selected
alert(dateToday);
alert(selectedDate);
if (selectedDate.isBefore(dateToday, 'day')) {
alert('That date is in the past!');
} else {
alert('Great!');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://momentjs.com/downloads/moment.js"></script>
(02:00)いずれかが、私はパリ時間(02:00)の下に選択するようにオフセットたとえばGMTを(+00:00)その後、過去の選択日-1日を午後10時に設定します。
私の質問は、過去の日付(2016-10-12 GMT)が正しいかどうかを正しく確認する方法です。
UPDATE:
私は、フォーマット機能を使用して、関係なく、タイムゾーンの日付を抽出することで、今のところ、それを解決しました。そして、私はこのようなそれらの瞬間に明示的に日付文字列を渡す真新しい瞬間を作成しました:
var dateToday = moment().utcOffset(offset); // get a moment now with the time zone offset
var selectedDate = moment(date, ['YYYY-MM-DD']); // and a moment that is the date of the day selected
var dateToday = dateToday.format('YYYY-MM-DD');
var selectedDate = selectedDate.format('YYYY-MM-DD');
var dateToday = moment(dateToday, ['YYYY-MM-DD']);
var selectedDate = moment(selectedDate, ['YYYY-MM-DD']);
モーメントは、デフォルトでローカルタイムゾーンの日付を解析します。私はあなたのコードからオフセット部分を削除するだけですべてが正常に動作すると思います。それ以外の場合は、['moment.utc()'](http://momentjs.com/docs/#/parsing/)を使用してUTCで文字列を比較することができます。複数のタイムゾーンを使用する必要がある場合は、[moment timezone](http://momentjs.com/timezone/) – VincenzoC
を使用することができます。-XX:00 GMTのタイムゾーンを選択すると問題が発生します。過去には、今はPacific/Pago_Pagoで11位になっているかもしれませんが、スクリプトはGMT第12日の日付を検証しています。私はそれを説明する必要があります。 time-zone.jsでタイムゾーンのリストをアップロードする必要があるので、PHPからのリスト(オフセット付き)をすでに持っている場合は、それが工夫されたソリューションだと思っています。とにかくありがとう! –