[解決済み] モーメント js 日付時刻比較
質問
私はmoment.jsを使って日付の時刻をフォーマットしていますが、ここに2つの日付値があり、一方の日付が他方より大きいときに特定の機能を実現したいのです。私は彼らのドキュメントのほとんどを読みましたが、これを達成するための関数は見つかりませんでした。私はそれがそこにあることを知っています。
これは私のコードです。
var date_time = 2013-03-24 + 'T' + 10:15:20:12 + 'Z'
var d = moment(date_time).tz('UTC'); // first date
var now = new Date(),
dnow = moment(now).tz('UTC'),
snow = dnow.minute() % 15,
diffnow = 15 - snow,
tonow = moment(dnow).add('minute', diffnow),
ahead30now = moment(tonow).add('minute', 30);
if (d > ahead30now) {
// allow input time
console.log('UTC TIME DB', d.format());
} else {
}
編集
var date_time = req.body.date + 'T' + req.body.time + req.body.timezone; // 2014-03-24T01:15:000
var utc_input_time = moment(date_time).utc(); // 2014-03-24T01:15:000
console.log('utc converted date_time', moment(date_time).utc().format("YYYY-MM-DDTHH:mm:SSS"));
var isafter = moment(utc_input_time).isAfter(moment('2014-03-24T01:14:000')); // true
if(isafter === true){
console.log('is after true');
} else {
console.log('is after is false');
}
ここでは、2つの日付を比較しています。
2014-03-24T01:15:000 > 2014-03-24T01:14:000
最初のものが2番目のものよりも大きいことを期待していますが、常にelse条件になっています。なぜでしょうか?
どのように解決するのですか?
を探しているのだと思います。
クエリ機能
,
isBefore
,
isSame
および
isAfter
.
しかし、あなたが何をしようとしているのか、正確に伝えるのは少し難しいです。 おそらく、入力時刻と現在時刻の差を取得したいだけなのでは? もしそうなら、次のようなものを考えてみてください。
差分機能
,
diff
. 例えば
moment().diff(date_time, 'minutes')
その他、いくつか。
-
1行目にエラーがあります。
var date_time = 2013-03-24 + 'T' + 10:15:20:12 + 'Z'
それじゃダメなんだ。 という意味でしょう。
var date_time = '2013-03-24' + 'T' + '10:15:20:12' + 'Z';
もちろん、あなたもそうかもしれません。
var date_time = '2013-03-24T10:15:20:12Z';
-
使っているんですね。
.tz('UTC')
を正しくない。.tz
に属しています。 モーメントタイムゾーン . のように、他のタイムゾーンを扱うのでなければ、これを使う必要はないでしょう。America/Los_Angeles
.値をUTCとしてパースしたい場合は、以下を使用します。
moment.utc(theStringToParse)
あるいは、ローカル値をパースして 変換 を使用して、UTCに変換します。
moment(theStringToParse).utc()
あるいは、まったく必要ないのかもしれません。 入力値がUTCだからといって、関数全体がUTCで動作する必要はないのです。
-
でインスタンスを取得しているようです。
moment(new Date())
. 代わりにmoment()
.
更新情報
編集内容からすると、これだけでいいと思うのですが。
var date_time = req.body.date + 'T' + req.body.time + 'Z';
var isafter = moment(date_time).isAfter('2014-03-24T01:14:00Z');
または、フィールドが正しい形式であることを確認したい場合。
var m = moment.utc(req.body.date + ' ' + req.body.time, "YYYY-MM-DD HH:mm:ss");
var isvalid = m.isValid();
var isafter = m.isAfter('2014-03-24T01:14:00Z');
関連
-
[解決済み】JavaScriptで「無効な日付」のDateインスタンスを検出する
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
OSSアップロードエラーを解決する: net::ERR_SSL_PROTOCOL_ERROR
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] JavaScriptの日付の書式設定方法
-
[解決済み] JavaScriptで現在の日付を取得するには?
-
[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] 2つの日付範囲が重なっているかどうかを判定する
-
[解決済み] moment.jsで日付だけを比較する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
jsを使った簡単な照明スイッチのコード
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
Vueのフォームイベントのデータバインディングの説明
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
[解決済み】Node.js Error: Cannot find module express
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
[解決済み】ERROR エラーです。スイッチのname属性が指定されていないフォームコントロールの値アクセッサがない
-
[解決済み】ExpressJS : res.redirect()が期待通りに動かない?