我的数据库中的日期设置为欧洲/伦敦时间。我正在使用Moment.js显示相对时间,例如" 3分钟前"。这对我来说很好,因为我在同一时区,但是,例如,PST时区的人会在8小时内看到""。我该如何解决这个问题?
我目前的代码是这样的:
{{1}}
答案 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不同。