この形式はT00:00:00.000Zとはどういう意味ですか?


回答:


84

これは、ISO-8601の日付表現の一部です。このパターンの完全な日付表現には日付も含まれている必要があるため、不完全です。

2015-03-04T00:00:00.000Z //Complete ISO-8601 date

この日付をそのまま解析しようとすると、Invalid Dateエラーが発生します。

new Date('T00:00:00.000Z'); // Invalid Date

したがって、この形式でタイムスタンプを解析する方法は、任意の日付と連結することだと思います

new Date('2015-03-04T00:00:00.000Z'); // Valid Date

次に、必要な部分(タイムスタンプ部分)のみを抽出できます。

var d = new Date('2015-03-04T00:00:00.000Z');
console.log(d.getUTCHours()); // Hours
console.log(d.getUTCMinutes());
console.log(d.getUTCSeconds());

2
閉じる-あなたが使用する必要がありますgetUTCHoursgetUTCMinutesgetUTCSeconds。それ以外の場合は、ローカルタイムゾーンの動作を伝えます。これにより、DSTが原因で、どのタイムゾーンとどの日付を選択するかによって異なる結果が得られます。
マットジョンソン-パイント2015年

12

moment.jsこれに使用することをお勧めします。moment.jsでは、次のことができます。

var localTime = moment().format('YYYY-MM-DD'); // store localTime
var proposedDate = localTime + "T00:00:00.000Z";

しばらくの間正しいフォーマットができたので、それが有効かどうかを解析します。

var isValidDate = moment(proposedDate).isValid();
// returns true if valid and false if it is not.

時間の部分を取得するには、次のようなことができます。

var momentDate = moment(proposedDate)
var hour = momentDate.hours();
var minutes = momentDate.minutes();
var seconds = momentDate.seconds();

// or you can use `.format`:
console.log(momentDate.format("YYYY-MM-DD hh:mm:ss A Z"));

momentjsの詳細http://momentjs.com/


2
適切なフォーマット文字列を使用して、モーメントコンストラクタでこれを直接解析できるはずです。(値の一部でない場合、モーメントは現在の日付を想定します。)また、moment.utc(...)結果の値が元の値と同じUTCゾーンにあるように検討することもできます。
マットジョンソン-パイント2015年

3

ある人がすでに提案しているように、

私はISO8601の日付文字列をそのような瞬間に直接渡しました...

`moment.utc('2019-11-03T05:00:00.000Z').format('MM/DD/YYYY')`

または

`moment('2019-11-03T05:00:00.000Z').utc().format('MM/DD/YYYY')`

これらのソリューションのどちらでも同じ結果が得られます。

`console.log(moment('2019-11-03T05:00:00.000Z').utc().format('MM/DD/YYYY')) // 11/3/2019`

上記のコードを説明する際に、moment.jsjavascriptライブラリの使用法を明確にリンクして推奨することもできます。
VKen

これは質問に対する答えを提供しません。十分な評判得られたら、どの投稿にもコメントできるようになります。代わりに、質問者からの説明を必要としない回答を提供してください。-口コミより
フィルチューン

あなたが正しいです@PhilTune、私は私の脳は、私は技術的に質問をコメントに返信していなかったことを非常に速く動いていたと思う
that_developer

1

または任意のパターンのISO_DATE_TIME = DateTimeFormatter.ISO_DATE_TIME; 代わりにDateTimeFormatterを使用してくださいDateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss")

これは私の問題を以下で修正しました

java.time.format.DateTimeParseException:テキスト '2019-12-18T19:00:00.000Z'をインデックス10で解析できませんでした


文字列型からOffsetDateTimeへの時間変換に関する問題が解決しました
RSH
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.