Zacząłem używać w tej chwili biblioteki, aby spróbować zdobyć czas na Niemcy przy użyciu następującego kodu:

import moment from 'moment'
import 'moment/locale/de'

moment.locale('de');
console.log(moment().format('LTS'));

Jednak powrócił mój czas, brytyjski czas letni (BST)

Pomyślałem, że był to problem z biblioteką, więc przepisałem go bez użycia biblioteki tak, jak:

const options = { hour: 'numeric', minute: 'numeric', second: 'numeric' }
const test = new Date();
console.log(test.toLocaleDateString('de-DE', options));

Jednak to również zwraca mój czas ... (z datą dodaną, miesiąc i rok zgodnie z oczekiwaniami)

Czy robię coś źle? A może coś wspólnego z tym, jak chromowane wyjścia do konsoli?

0
Edward 4 czerwiec 2018, 11:37

3 odpowiedzi

Najlepsza odpowiedź

Moment Locale odnosi się do języka nie czasowego czasu.

Potrzebujesz Moment TimeZone dla tego:

moment().tz('CET').format('LTS')

EDYTOWAĆ

Jak sugerowany przez Robg można również osiągnąć bez chwili:

new Date().toLocaleString('de-DE', { timeZone: 'Europe/Berlin' });
document.getElementById('date').innerHTML = new Date().toLocaleString('de-DE', { timeZone: 'Europe/Berlin' });
<div id="date"/>
2
Daniel 4 czerwiec 2018, 10:23

Z Tolocalestring Można użyć opcji Timezone , jednak nie może być obsługiwana wszędzie, gdzie trzeba być:

var options = {hour: 'numeric', minute: 'numeric', second: 'numeric', timeZone: 'Europe/Berlin'};
var test = new Date();
console.log(test.toLocaleDateString('de-DE', options));
1
RobG 4 czerwiec 2018, 09:30

Oto jak możesz to zrobić za pomocą moment -

function toTimeZone(time, zone) {
    var format = 'YYYY/MM/DD HH:mm:ss ZZ';
    return moment(time, format).tz(zone).format(format);
}

console.log(toTimeZone(new Date(), "UTC"));
<script src="http://momentjs.com/downloads/moment.min.js"></script>
0
Vivek 4 czerwiec 2018, 08:46