Moment: При создании даты в формате UTC с помощью Moment.js установщик zone () ничего не делает (2.8.3)

Созданный на 11 сент. 2014  ·  3Комментарии  ·  Источник: moment/moment

После запуска зоны (-1) я получаю тот же объект момента, что и когда я его не запускаю. Пример:

console.log (момент (). utc (). toDate ());
console.log (момент (). utc (). zone (-1) .toDate ());

Я ожидал, что это изменит объект Date в соответствии с смещением часового пояса, но он не делает ... ну, ничего.

Самый полезный комментарий

@rquinlivan Я копнул немного глубже. Вы можете передать второй аргумент zone() чтобы время на настенных часах оставалось неизменным:

> moment().format()
'2014-09-15T16:59:30-04:00'
> moment().zone(-1).format()
'2014-09-15T21:59:35+01:00'
> moment().zone(-1, true).format()
'2014-09-15T16:59:38+01:00'

Итак, вы получите:

> moment().toDate()
Mon Sep 15 2014 17:00:16 GMT-0400 (EDT)
> moment().zone(-1, true).toDate()
Mon Sep 15 2014 12:00:19 GMT-0400 (EDT)

Я считаю, что это то, чего вы хотите.

FWIW, каждый сможет быстрее помочь вам с открытым исходным кодом, если вы подойдете к вопросу о функциональном пробеле со словами «эй, мне нужна эта функция, чем я могу помочь?» а не как ты.

Все 3 Комментарий

Moment отслеживает экземпляры во времени (то есть миллисекунды с 1970 UTC). Что вы делаете, когда говорите utc() или zone() , вы меняете то, как это время _выражается_ (т. Е. Мы говорим «9:00» по EST, но «6:00» по PST , но это то же самое время). Таким образом, при обратном преобразовании в дату удаляются метаданные «вы должны печатать даты по-другому». Все еще то же время.

Похоже, вы хотите изменить фактическое время? У нас нет функции «изменить время, чтобы оно отображалось таким же образом в этой другой зоне», однако мы обсуждали это (или мы, @ichernev?)

Да, я хочу изменить фактическое время. Это довольно ограничивает, и мне, вероятно, придется прекратить использовать эту библиотеку из-за этого ограничения.

@rquinlivan Я копнул немного глубже. Вы можете передать второй аргумент zone() чтобы время на настенных часах оставалось неизменным:

> moment().format()
'2014-09-15T16:59:30-04:00'
> moment().zone(-1).format()
'2014-09-15T21:59:35+01:00'
> moment().zone(-1, true).format()
'2014-09-15T16:59:38+01:00'

Итак, вы получите:

> moment().toDate()
Mon Sep 15 2014 17:00:16 GMT-0400 (EDT)
> moment().zone(-1, true).toDate()
Mon Sep 15 2014 12:00:19 GMT-0400 (EDT)

Я считаю, что это то, чего вы хотите.

FWIW, каждый сможет быстрее помочь вам с открытым исходным кодом, если вы подойдете к вопросу о функциональном пробеле со словами «эй, мне нужна эта функция, чем я могу помочь?» а не как ты.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги