Bu format ne anlama geliyor T00: 00: 00.000Z?


Yanıtlar:


86

ISO-8601 tarih temsilinin bir parçasıdır . Eksiktir çünkü bu modeldeki tam bir tarih temsili tarihi de içermelidir:

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

Bu tarihi olduğu gibi ayrıştırmaya çalışırsanız bir Invalid Datehata alırsınız :

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

Öyleyse, bir zaman damgasını bu biçimde çözümlemenin yolu, herhangi bir tarihle uyumlaştırmaktır.

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

Daha sonra sadece istediğiniz kısmı çıkartabilirsiniz (zaman damgası kısmı)

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

2
Kapanış - kullanmalıdır getUTCHours, getUTCMinutesve getUTCSeconds. Aksi takdirde, yerel saat diliminin davranışını veriyorsunuz, bu da hangi saat dilimine ve seçtiğiniz tarihe bağlı olarak DST nedeniyle farklı sonuçlar verecek.
Matt Johnson-Pint

14

moment.jsbunun için kullanmanızı öneririm . Moment.js'de şunları yapabilirsiniz:

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

Artık bir süre için doğru biçime sahip olduğunuza göre, geçerliyse ayrıştırın:

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

ve zaman bölümleri almak için aşağıdakilere benzer bir şey yapabilirsiniz:

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 hakkında daha fazla bilgi http://momentjs.com/


2
Bunu doğrudan moment yapıcısında uygun bir biçim dizesiyle çözümleyebilmelisiniz. (değerin bir parçası değilse, an geçerli tarihi varsayacaktır.) Ayrıca, moment.utc(...)elde edilen değerin orijinal değerle aynı UTC bölgesinde olmasını da düşünebilirsiniz .
Matt Johnson-Pint

4

Bir kişinin daha önce önerdiği gibi,

Geçtim ISO 8601 tarih dizesini doğrudan şu ana kadar ...

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

veya

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

bu çözümlerden herhangi biri size aynı sonucu verecektir.

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

Yukarıdaki kodu açıklarken moment.js javascript kitaplığını da açıkça bağlamak ve tavsiye etmek iyi olur .
VKen

Bu soruya bir cevap vermiyor. Yeterli itibara sahip olduğunuzda , herhangi bir gönderi hakkında yorum yapabilirsiniz ; bunun yerine soruyu soranın açıklamasını gerektirmeyen yanıtlar verin . - Yorumdan
Phil Tune

@PhilTune haklısın, sanırım beynim o kadar hızlı hareket ediyordu ki teknik olarak soruya değil yoruma cevap
verdim

1

Lütfen ISO_DATE_TIME = DateTimeFormatter.ISO_DATE_TIME; bunun yerine DateTimeFormatter kullanınDateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss") herhangi bir kalıp

Bu benim sorunumu çözdü

java.time.format.DateTimeParseException: '2019-12-18T19: 00: 00.000Z' metni dizin 10'da ayrıştırılamadı


Dize türünden OffsetDateTime
RSH
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.