誰かがJavaScriptでこのタイプのフォーマットを説明できますか
T00:00:00.000Z
そしてそれを解析する方法は?
誰かがJavaScriptでこのタイプのフォーマットを説明できますか
T00:00:00.000Z
そしてそれを解析する方法は?
回答:
これは、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());
getUTCHours
、getUTCMinutes
とgetUTCSeconds
。それ以外の場合は、ローカルタイムゾーンの動作を伝えます。これにより、DSTが原因で、どのタイムゾーンとどの日付を選択するかによって異なる結果が得られます。
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/
moment.utc(...)
結果の値が元の値と同じUTCゾーンにあるように検討することもできます。
ある人がすでに提案しているように、
私は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`
または任意のパターンの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で解析できませんでした