Subtract 1 day from date in different timezone usi

2019-08-09 09:16发布

问题:

I want to subtract 1 day from the time now in a different timezone. The moment.js docs say to use referenceTime as the time to subtract one day from. The code below prints the current time in Los Angeles (first) and then the the time 1 day ago from today in the timezone I am currently in (second), I want it to print the time 1 day ago from the timezone in Los Angeles.

require moment = require('moment'),
        moment_tz = require('moment-timezone');

var referenceTime = moment_tz().tz("America/Los_Angeles").format();
console.log(referenceTime);
var referenceTimeMinusOne = moment().subtract(1,'days').calendar(referenceTime);
console.log(referenceTimeMinusOne); 

回答1:

It doesn't matter, it operates on UTC and converts afterwards.

moment = require('moment-timezone');

var la = moment().tz("America/Los_Angeles")
var nl = moment().tz("Europe/Amsterdam")

console.log('now:')
console.log(la.format());
console.log(nl.format());

var earlier_la = la.subtract(1,'days')
var earlier_nl = nl.subtract(1,'days')

console.log('\nearlier:')
console.log(earlier_la.format());
console.log(earlier_nl.format());

// Earlier Dutch time converted back to Los Angelos equals 
// Earlier Los Angelos time
console.log(earlier_nl.tz('America/Los_Angeles').format());