英文:
How to handle BST and GMT timezones on client side? Storing them in a DB as UTC
问题
我有一个Go应用程序,我将所有的日期时间都存储为UTC:
dateTime, err := time.Parse("2006-01-02T15:04:05.000Z", myDateTime)
这将变成类似于:2022-09-29T19:40:36.150Z
。
现在我想在客户端(网站上)显示这个日期时间,但要以用户所在时区的时间显示。
由于所有时间都是UTC,我可以让用户从一个时区列表中选择他们的时区,比如这个列表:https://gist.github.com/valo/c07f8db33d223f57a4cc9c670e1b6050。
然后,只需要从UTC中添加/减去一些时间,并显示出来。
但问题是夏令时,当夏季到来时,客户端的时区会发生变化,当冬季到来时又会发生变化。
人们是如何解决这个问题的?
英文:
I've got a Go app and I store all datetimes as UTC:
dateTime, err := time.Parse("2006-01-02T15:04:05.000Z", myDateTime)
This becomes something like: 2022-09-29T19:40:36.150Z
.
Now I want to show this datetime client side (on a website), but showing the user the time in their timezone.
Since it's all UTC I could have the user pick their timezone from a list, like this one https://gist.github.com/valo/c07f8db33d223f57a4cc9c670e1b6050.
Then it's just a matter of adding/subtracting some time from the UTC and showing it.
But the problem is with daylight savings time, the client side timezone would have to change when it's summer, and change again when it's winter.
How are people doing this?
答案1
得分: 3
通常,这是在客户端上发生的。关于客户端时区的信息存储在浏览器中,并且如果需要,可以提供给您。但是,有一些函数可以自动解决这个问题,比如 toLocaleDateString
。
步骤1:
将时间字符串 2022-09-29T19:40:36.150Z
解析为 JavaScript 中的 Date 对象。
步骤2:
在日期上使用 toLocaleDateString
。这将以客户端浏览器中存储的时区设置显示日期。
英文:
Usually, this happens on the client side. Information about the client's timezone is stored on the browser and is available to you if you need it. However, there are functions that sort this out automatically like toLocaleDateString
.
Step 1.
Parse the time string 2022-09-29T19:40:36.150Z
to a Date object in javascript
Step 2.
Use toLocaleDateString
on the date. This will display the Date in the client's timezone setting stored in the browser
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论