Czy ktoś może wyjaśnić ten typ formatu w javascript
T00:00:00.000Z
A jak to przeanalizować?
Czy ktoś może wyjaśnić ten typ formatu w javascript
T00:00:00.000Z
A jak to przeanalizować?
Odpowiedzi:
Jest to część reprezentacji daty ISO-8601 . Jest niekompletna, ponieważ pełna reprezentacja daty w tym wzorze powinna również zawierać datę:
2015-03-04T00:00:00.000Z //Complete ISO-8601 date
Jeśli spróbujesz przeanalizować tę datę tak, jak jest, pojawi się Invalid Date
błąd:
new Date('T00:00:00.000Z'); // Invalid Date
Wydaje mi się, że sposobem na przeanalizowanie znacznika czasu w tym formacie jest połączenie z dowolną datą
new Date('2015-03-04T00:00:00.000Z'); // Valid Date
Następnie możesz wyodrębnić tylko żądaną część (część z sygnaturą czasową)
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
i getUTCSeconds
. W przeciwnym razie nadasz zachowanie lokalnej strefy czasowej, które przyniesie różne wyniki w zależności od strefy czasowej i dnia, w którym wybierzesz - ze względu na czas letni.
Sugeruję użycie moment.js
do tego. W chwili.js możesz:
var localTime = moment().format('YYYY-MM-DD'); // store localTime
var proposedDate = localTime + "T00:00:00.000Z";
teraz, gdy masz już odpowiedni format na jakiś czas, przeanalizuj go, jeśli jest prawidłowy:
var isValidDate = moment(proposedDate).isValid();
// returns true if valid and false if it is not.
aby uzyskać części czasu, możesz zrobić coś takiego:
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"));
Więcej informacji o momentjs http://momentjs.com/
moment.utc(...)
, czy wynikowa wartość jest w tej samej strefie UTC, co oryginalna wartość.
Jak jedna osoba mogła już zasugerować,
Przekazałem ciąg daty ISO 8601 bezpośrednio do chwili, tak ...
`moment.utc('2019-11-03T05:00:00.000Z').format('MM/DD/YYYY')`
lub
`moment('2019-11-03T05:00:00.000Z').utc().format('MM/DD/YYYY')`
każde z tych rozwiązań da ten sam rezultat.
`console.log(moment('2019-11-03T05:00:00.000Z').utc().format('MM/DD/YYYY')) // 11/3/2019`
Użyj DateTimeFormatter ISO_DATE_TIME = DateTimeFormatter.ISO_DATE_TIME;
zamiast DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss")
lub dowolnego wzorca
To rozwiązało mój problem poniżej
java.time.format.DateTimeParseException: nie można przeanalizować tekstu „2019-12-18T19: 00: 00.000Z” w indeksie 10