Moment.js当地的相对时间

时间:2016-01-22 16:54:31

标签: javascript momentjs

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

我目前的代码是这样的:

{{1}}

2 个答案:

答案 0 :(得分:1)

我认为最好的方法是将日期存储在UTC中,然后将其转换为本地时区进行显示。请注意,这不一定与伦敦时间相同,因为UTC消除了夏令时的废话。如果存储在数据库中的时间戳不必处理时区和DST的变幻莫测,您可以使用日期类完成所需的一切。日期类在内部维护自己的纪元,自UTC 1970年1月1日午夜起经过几毫秒。您可以按如下方式评估两个Date对象之间的差异:

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

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

答案 1 :(得分:1)

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

很难说你是否这样做,因为你没有给出输入字符串的样本值。

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

不,伦敦与UTC不同。