Ответ 1
Вот как вы можете сделать то, что вы просите:
// get a moment representing the current time
var now = moment();
// create a new moment based on the original one
var another = now.clone();
// change the offset of the new moment - passing true to keep the local time
another.utcOffset('+05:30', true);
// log the output
console.log(now.format()); // "2016-01-15T11:58:07-08:00"
console.log(another.format()); // "2016-01-15T11:58:07+05:30"
Тем не менее, вы должны признать две важные вещи:
-
another
объект больше не представляет текущее время - даже в целевом часовом поясе. Это совершенно другой момент времени. (Мир не синхронизирует локальные часы. Если бы это произошло, нам бы не понадобились часовые пояса!).По этой причине, хотя приведенный выше код удовлетворяет заданному вопросу, я настоятельно рекомендую не использовать его. Вместо этого переоцените ваши требования, так как, скорее всего, они неправильно понимают природу часовых поясов и часовых поясов.
-
Часовой пояс не может быть полностью представлен одним смещением. Прочитайте "Часовой пояс! = Смещение" в теге часового пояса вики. Хотя некоторые часовые пояса имеют фиксированные смещения (например, +05: 30, используемый Индией), многие часовые пояса меняют свои смещения в разных точках в течение года, чтобы приспособиться к переходу на летнее время.
-
Если вы хотите учесть это, вы можете использовать момент-часовой пояс вместо вызова
utcOffset(...)
. Тем не менее, проблема в моей первой пуле будет по-прежнему применима.
// get a moment representing the current time
var now = moment();
// create a new moment based on the original one
var another = now.clone();
// change the time zone of the new moment - passing true to keep the local time
another.tz('America/New_York', true); // or whatever time zone you desire
// log the output
console.log(now.format()); // "2016-01-15T11:58:07-08:00"
console.log(another.format()); // "2016-01-15T11:58:07-05:00"