Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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_Momentjs - Fatal编程技术网

Javascript 矩.js本地相对时间

Javascript 矩.js本地相对时间,javascript,momentjs,Javascript,Momentjs,我的数据库中的日期设置为欧洲/伦敦时间。我使用Moment.js来显示相对时间,例如“3分钟前”。这对我来说很好,因为我在同一时区,但例如,PST时区的人会看到“8小时内”。我怎样才能解决这个问题 我当前的代码如下: $('time').text(瞬间('2016-01-22 18:00:00').fromNow())我认为最好的方法是将日期存储在UTC中,然后将其转换为本地时区显示。请注意,这不一定与伦敦时间相同,因为UTC消除了夏令时的废话。只要数据库中存储的时间戳不必处理时区和DST的变化

我的数据库中的日期设置为欧洲/伦敦时间。我使用Moment.js来显示相对时间,例如“3分钟前”。这对我来说很好,因为我在同一时区,但例如,PST时区的人会看到“8小时内”。我怎样才能解决这个问题

我当前的代码如下:


$('time').text(瞬间('2016-01-22 18:00:00').fromNow())

我认为最好的方法是将日期存储在UTC中,然后将其转换为本地时区显示。请注意,这不一定与伦敦时间相同,因为UTC消除了夏令时的废话。只要数据库中存储的时间戳不必处理时区和DST的变化无常,就可以使用date类完成所有需要的操作。date类在内部以毫秒为单位维护自己的历元,从UTC 1970年1月1日午夜开始。可以按如下方式计算两个日期对象之间的差异:

var agora = Date.now();
var stored = ... // the date that was stored in your database
var diff_msec = agora.getTime() - stored.getTime();

知道差异及其单位是毫秒,您可以将差异转换为最适合显示的任何单位。

我认为最好的方法是将日期存储在UTC中,然后将其转换为本地时区进行显示。请注意,这不一定与伦敦时间相同,因为UTC消除了夏令时的废话。只要数据库中存储的时间戳不必处理时区和DST的变化无常,就可以使用date类完成所有需要的操作。date类在内部以毫秒为单位维护自己的历元,从UTC 1970年1月1日午夜开始。可以按如下方式计算两个日期对象之间的差异:

var agora = Date.now();
var stored = ... // the date that was stored in your database
var diff_msec = agora.getTime() - stored.getTime();

知道差异及其单位是毫秒,您可以将差异转换为最适合表示的任何单位。

为了回应Jon的回答,moment的相对时间功能严格基于UTC,因此您描述的行为实际上不会发生,除非您是在当地时间解释原始时间戳

很难说您是否正在这样做,因为您没有给出输入字符串的示例值

如果您的时间确实是基于UTC的,但输入字符串中没有反映出来,那么请使用
moment.UTC
,而不仅仅是
moment


不,伦敦与UTC不一样。

回应Jon的回答,时刻的相对时间功能严格基于UTC,因此您描述的行为实际上不会发生,除非您在当地时间解释原始时间戳

很难说您是否正在这样做,因为您没有给出输入字符串的示例值

如果您的时间确实是基于UTC的,但输入字符串中没有反映出来,那么请使用
moment.UTC
,而不仅仅是
moment


不,伦敦和UTC不一样。

伦敦是GMT。你的意思是在用户时区的后端输出它吗?伦敦在冬天只是GMT。夏天是英国夏令时(GMT+1)。伦敦是GMT。你的意思是在用户时区的后端输出它吗?伦敦在冬天只有GMT。夏天是英国夏令时(格林尼治标准时间+1)。我的应用程序存储的日期类似于“2016-01-22 18:00:00”。幸运的是,我可以将应用程序更改为使用UTC时间而不是GMT,而无需更改数据库记录时刻(localTime).fromNow()
这将起作用,但您可以从现在开始使用
,您当前拥有的
toDate
。不需要临时步骤。Sweet:)我基于这个-。我会改变的,谢谢马特!我的应用程序存储的日期类似于“2016-01-22 18:00:00”。幸运的是,我可以将应用程序更改为使用UTC时间而不是GMT,而无需更改数据库记录时刻(localTime).fromNow()这将起作用,但您可以从现在开始使用
,您当前拥有的
toDate
。不需要临时步骤。Sweet:)我基于这个-。我会改变的,谢谢马特!