Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 矩JS-比较本地时间的正确方法_Javascript_Jquery_Momentjs - Fatal编程技术网

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),您需要将两者转换为一种格式,然后减去差值。您将在几秒钟内获得该值。你可以用小时或任何你喜欢的格式转换。