Personen, die mit dem Java 8 java.time
Paket, oder joda-time
werden wahrscheinlich das neue Kind im Block lieben: die js-joda Bibliothek.
Installieren Sie
npm install js-joda js-joda-timezone --save
Exemple
<script src="node_modules/js-joda/dist/js-joda.js"></script>
<script src="node_modules/js-joda-timezone/dist/js-joda-timezone.js"></script>
<script>
var dateStr = '2012/04/10 10:10:30 +0000';
JSJoda.use(JSJodaTimezone);
var j = JSJoda;
// https://js-joda.github.io/js-joda/esdoc/class/src/format/DateTimeFormatter.js~DateTimeFormatter.html#static-method-of-pattern
var zonedDateTime = j.ZonedDateTime.parse(dateStr, j.DateTimeFormatter.ofPattern('yyyy/MM/dd HH:mm:ss xx'));
var adjustedZonedDateTime = zonedDateTime.withZoneSameInstant(j.ZoneId.of('America/New_York'));
console.log(zonedDateTime.toString(), '=>', adjustedZonedDateTime.toString());
// 2012-04-10T10:10:30Z => 2012-04-10T06:10:30-04:00[America/New_York]
</script>
Wie es sich für Java gehört, ist es ziemlich ausführlich lol. Aber, wobei eine portierte Java-Bibliothek, vor allem wenn man bedenkt, dass sie 1800'ish Testfälle portiert, es funktioniert wahrscheinlich auch hervorragend genau.
Chrono-Manipulation ist schwer. Deshalb sind auch viele andere Bibliotheken in Grenzfällen fehlerhaft. Moment.js scheint Zeitzonen richtig zu bekommen, aber die anderen js-Bibliotheken, die ich gesehen habe, einschließlich timezone-js
scheinen nicht vertrauenswürdig zu sein.