Конвертировать дату в JS из одного часового пояса в другой - PullRequest
0 голосов
/ 09 апреля 2020

Я хочу преобразовать указанную c строку даты с указанным c часовым поясом в другой часовой пояс в другом формате. Вот пример:

var date = '2020-04-09 17:10:57'; //Date in YYYY-MM-DD HH:MM:SS format
var timezone = 'America/New_York'; //Timezone of the given var date

Теперь я хочу преобразовать эту дату в часовом поясе в другой, например, у меня есть:

var convert_to_timezone = 'Europe/Berlin';

Я просто знаю, как получить текущее дата пользователей, но я не знаю, как преобразовать именно эту дату с точно таким часовым поясом в другой. Я также хочу соблюдать летнее время.

Вывод должен быть:

//2020-04-09 23:10:57

Заранее спасибо, вы действительно поможете мне с ответом, потому что я пробовал это 2 часа и не получил это: (

Ответы [ 2 ]

2 голосов
/ 09 апреля 2020

Luxon - это современное переписывание Moment. Если вы go это направление, вот рабочий код:

var DateTime = luxon.DateTime;

var date = '2020-04-09 17:10:57';
var timezone = 'America/New_York';
var format = 'yyyy-MM-dd HH:mm:ss';

var luxonTime = DateTime.fromFormat(date, format, {zone: timezone});

var berlinTime = luxonTime.setZone('Europe/Berlin').toFormat(format);

console.log(berlinTime);
<script src="https://cdn.jsdelivr.net/npm/luxon@1.23.0/build/global/luxon.min.js"></script>

О разнице между Люксоном и Моментом: https://github.com/moment/luxon/blob/master/docs/why.md

0 голосов
/ 09 апреля 2020

Я думаю, использовать часовой пояс момента гораздо проще и менее многословно.

var newYork = moment.tz("2020-04-09 17:10:57", "America/New_York");
var berlin = newYork.clone().tz("Europe/Berlin");
console.log(berlin.format())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.28/moment-timezone-with-data.min.js"></script>

Вот пример

...