我意识到这是一个常见问题,但我找不到任何指出使用/存储偏移量用于用户时区的缺点的帖子。这不是更好,更有效的方法吗?
长时间下拉列表的时区不是用户友好的,大多数此类列表无论如何都没有所有城市。他们还要求用户指定他们的时区。我觉得简单地检测它可能会好得多。就我而言,我的应用程序是一个带有Reach前端的ASP.NET核心应用程序,通过JavaScript捕获用户的时区偏移非常容易。
存储用户时区偏移的任何原因都不是一个好主意吗?
答案 0 :(得分:5)
存储用户时区偏移的任何原因都不是一个好主意吗?
是。许多。时区和偏移量不是一回事。时区表示本地时间对齐的地理区域。时区可能会经历几次与UTC偏移的不同变化。其中一些是常规的(如夏令时),其中一些是不规则的(例如政府更改其标准时间或dst规则时)。
...就我而言,我只想在用户的当前时区显示所有日期时间值,以便它们对用户有意义。
好的,我们假设您检查用户当前的时区偏移量,它是UTC-7。因此,您可以将其应用于应用程序中的某些日期和时间并完成 - 所以您认为。除非您没有考虑到用户在加利福尼亚州,并且您的某个日期是在12月,当时偏移量应为UTC-8。
所以你试图纠正这个问题,然后制定出&#34的规则;当我看到-7时,有时可能是-8"。除了现在你有一个用户出现在科罗拉多州,冬天是-7,夏天是-6。或来自亚利桑那州的另一位用户,该州大部分地区全年都在-7。你怎么知道要遵循哪套规则?如果不引用实际的时区,则无法完成。
这在全世界变得更加复杂。例如,UTC + 2的变化数量就太疯狂了。即使对于在UTC + 2和UTC + 3之间切换的国家/地区,他们也不会在同一天或同一时间切换!
另见:The Problem with Time & Timezones - Computerphile (YouTube)
和the StackOverflow timezone
tag wiki。