こんにちは、ドキュメントを読みましたが、結果として取得した日付が時間の後に「GMT+0200 (CEST)」を適切に処理するかどうかを確認したかっただけです。これは出力のある私のコードです:
var date= moment("Mon Mar 27 2017 18:44:35 GMT+0200 (CEST)", "ddd MMM D YYYY HH:mm:ss 1").format()
console.log(date)
//output:
//2017-03-27T18:44:35+02:00
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
いいえ、フォーマット文字列はオフセットを適切に処理しません。
moment(String)
解析関数(一つだけのパラメータがあることに注意してください)ISO 8601およびRFC 2822個の文字列を受け付けます。この関数は format パラメーターを使用しないため、1
どこでも使用する必要はありません。とにかく、月の日が月の名前の後にあるため、入力は RFC 2822 に準拠していません。使用moment(String)
すると、次のコードに示すように、コンソールにDeprecation Waringが表示されます。
var date= moment("Mon Mar 27 2017 18:44:35 GMT+0200 (CEST)").format();
console.log(date);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
ドキュメントに次のように記載されているように、前のコードの結果はブラウザー間で一貫性がありません。
警告:文字列の解析に対するブラウザのサポートに一貫性がありません。どの形式をサポートする必要があるかについての仕様がないため、一部のブラウザーで機能するものは、他のブラウザーでは機能しません。
コメントで以前に提案したように、UTC オフセットを考慮するために、トークン ( UTC からのオフセット、、または) を使用してモーメント文字列 + フォーマット解析関数を使用できます。ZZ
+-HH:mm
+-HHmm
Z
あなたの場合、moment.utc
( ZZ
/Z
トークン) をlocal()
関数と組み合わせて、入力を正しく解析できます。
var date= moment.utc("Mon Mar 27 2017 18:44:35 GMT+0200 (CEST)", "ddd MMM D YYYY HH:mm:ss ZZ");
// Local date, but considering input offset
console.log(date.local().format());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
私のソリューションは、オフセット文字列を考慮しているため、あなたのソリューションとは異なることに注意してください。unix()
ここに示すように、メソッドを使用してテストできます(環境オフセットを変更してくださいUTC+2
)。
var myDate = moment.utc("Mon Mar 27 2017 18:44:35 GMT+0200 (CEST)", "ddd MMM D YYYY HH:mm:ss ZZ");
console.log(myDate.unix()); // 1490633075
var yourDate= moment("Mon Mar 27 2017 18:44:35 GMT+0200 (CEST)", "ddd MMM D YYYY HH:mm:ss 1");
console.log(yourDate.unix()); // output depends on browser offset
var targetDate = moment.utc("2017-03-27 16:44:35");
console.log(targetDate.unix()); // 1490633075
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
さらに参考として、次のように述べられているタイム ゾーンとオフセットガイドをご覧ください。
Moment.js コア ライブラリは、オフセット値に基づいた時間の調整に関連する機能を提供します。タイム ゾーン データに基づく日付の調整はサポートされていません。これは、Moment TimeZone ライブラリによって提供されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加