При использовании момента необходимо учитывать смещение (используя timezones moment.js ).Поскольку на входе не было смещения, момент будет зависеть от часового пояса компьютера, на котором работает код, и, следовательно, от других значений ..
Пример:
var a = moment.tz("2013-11-18 11:55", "Asia/Taipei");
var b = moment.tz("2013-11-18 11:55", "America/Toronto");
a.format(); // 2013-11-18T11:55:00+08:00
b.format(); // 2013-11-18T11:55:00-05:00
a.utc().format(); // 2013-11-18T03:55Z
b.utc().format(); // 2013-11-18T16:55Z
При изменении часового пояса объекта moment
использование момента времени-часа влияет только на значение местного времени.Он не меняет отображаемый момент времени и, следовательно, не меняет базовую временную метку.
A Unix Timestamp равна всегда на основе UTC - вы можете видетьэто такая же временная метка в любой точке мира.
Редактировать:
Если вы используете utcOffset
, вы должны передать целое число:
Пример:
moment.utc("2015-10-01 01:24:21").utcOffset("-240").format('YYYYMMDD HHmmss ZZ')
// "20151001 012421 +0000"
moment.utc("2015-10-01 01:24:21").utcOffset(-240).format('YYYYMMDD HHmmss ZZ')
// "20150930 212421 -0400"
MomentJS позволяет передавать аргументы смещения в виде строки, но он ожидаетстрока в одном из форматов ISO8601: [+/-]HH:mm
или [+/-]HHmm
.
Чтобы избежать всего этого вместе, вы можете, если известно, передать местоположение в качестве аргумента, например
moment.tz(start_time, "HH:mm:ss", "Asia/Kolkata").valueOf();
как упомянуто в первом примере выше ..