Javascript 矩JS-比较本地时间的正确方法
我试图使用来比较数据库中存储的日期(设置为Javascript 矩JS-比较本地时间的正确方法,javascript,jquery,momentjs,Javascript,Jquery,Momentjs,我试图使用来比较数据库中存储的日期(设置为Europe/Londontimezone)与当前用户的时间,考虑到他们的时区 我从数据库返回一个日期字符串,并希望使用fromNow()函数,如下所示: console.log(dbDate); console.log(moment().format()); console.log(moment(dbDate).fromNow()); // DB stored time (Europe/London) // 2017-09-26 06:56:26
Europe/London
timezone)与当前用户的时间,考虑到他们的时区
我从数据库返回一个日期字符串,并希望使用fromNow()
函数,如下所示:
console.log(dbDate);
console.log(moment().format());
console.log(moment(dbDate).fromNow());
// DB stored time (Europe/London)
// 2017-09-26 06:56:26
// Current user time (timezone is Pacific Time / Los Angeles)
// 2017-09-25T23:59:03-07:00
// String output by fromNow() function, which should reflect the timezone difference but doesn't
// in 7 hours
我希望fromNow()
字符串考虑时区差异,这应该始终是一个时间“以前”
,而不是将来
我可能错过了一些很明显的关于图书馆的东西,所以如果这很简单,请提前道歉
// get the current time so we know which offset to take
var now = moment.utc();
// get the zone offsets for this time, in minutes
var NewYork_tz_offset = moment.tz.zone("America/New_York").offset(now);
var MY_DATE = moment(dbDate);
// calculate the difference in hours
console.log((NewYork_tz_offset - MY_DATE) / 60);
这对您的原因有帮助吗?您必须使用,您可以使用以下方法解析dbDate
指定“欧洲/伦敦”
时区:
moment.tz
构造函数采用与矩构造函数相同的所有参数,但使用最后一个参数作为时区标识符
然后你可以利用时间和时间
这里有一个活生生的例子:
var dbDate=“2017-09-26 06:56:26”;
var now=力矩();
var momDbDate=矩.tz(dbDate,“欧洲/伦敦”);
var Pacime=时刻(“2017-09-25T23:59:03-07:00”);
console.log(dbDate);
console.log(矩().format());
log(momDbDate.fromNow());
log(momDbDate.diff(现在是'hours');
log(momDbDate.diff(名称为“小时”)代码>
谢谢。我不知道用户的时区,所以我需要检测它,但是使用下面的代码并不能像预期的那样工作var NewYork\u tz\u offset=矩.tz.zone(矩.tz.guess()).offset(现在)代码>-有什么想法吗?我认为是UTC(使用Magento),您需要将两者转换为一种格式,然后减去差值。您将在几秒钟内获得该值。你可以用小时或任何你喜欢的格式转换。