我在格林威治时间区域的数据库里有个时间戳。如何根据用户时区显示时间?目前我得到的时间是这样的
return luxon.DateTime.fromSQL(created_at).setZone('local');
它以gtm为单位返回时间。
发布于 2018-10-20 05:51:28
一种更简洁的处理方法是告诉解析器时间是用GMT表示的:
DateTime.fromSQL(current_time, {zone: "utc"}).toLocal()
为了更好地解释这一点,在你的原版中发生的事情是,时间字符串应该被解释为GMT时间,但卢克森并不知道这一点。因此,它将字符串解释为本地时间,这与您所说的偏移量所指的时间不一致。但如果卢克森知道“这是用GMT表示的”,那么它将在第一时间得到正确的时间。
发布于 2018-10-18 13:09:45
使用此方法解决的问题:
let offset = - (new Date().getTimezoneOffset() / 60);
return luxon.DateTime.fromSQL(created_at).plus({hours: offset}).toLocaleString(luxon.DateTime.TIME_SIMPLE)
https://stackoverflow.com/questions/52861651
复制相似问题