【发布时间】:2019-03-22 12:47:08
【问题描述】:
我在 GMT 区域的数据库中有一个时间戳。如何根据用户时区显示时间?目前我有这样的时间
return luxon.DateTime.fromSQL(created_at).setZone('local');
它返回 gtm 中的时间。
【问题讨论】:
标签: javascript luxon
我在 GMT 区域的数据库中有一个时间戳。如何根据用户时区显示时间?目前我有这样的时间
return luxon.DateTime.fromSQL(created_at).setZone('local');
它返回 gtm 中的时间。
【问题讨论】:
标签: javascript luxon
处理它的更简洁的方法是告诉解析器时间以 GMT 表示:
DateTime.fromSQL(current_time, {zone: "utc"}).toLocal()
为了进一步解释这一点,您原来的情况是时间字符串被解释为 GMT 时间,但 Luxon 不知道这一点。因此,它将字符串解释为本地时间,这与您所说的偏移时间不同。但是,如果 Luxon 知道“这是用 GMT 表示的”,那么它将首先获得正确的时间。
【讨论】:
使用此方法解决的问题:
let offset = - (new Date().getTimezoneOffset() / 60);
return luxon.DateTime.fromSQL(created_at).plus({hours: offset}).toLocaleString(luxon.DateTime.TIME_SIMPLE)
【讨论】: