我正在写博客,想在东部时区展示我的帖子。我认为存储所有UTC都是正确的方法。这会带来一些挑战:
我必须将所有时间从UTC转换为东部。这不是一个大问题,但增加了很多代码。
而“biggie”就是我通过传递查询ala blogger来使用短日期时间来引用帖子。问题是没有办法将短日期时间转换为正确的UTC日期,因为我缺少公布的时间信息。
更新
@Jon,非常重视您的专业知识,但我已经决定将UTC时间存储在数据库中是错误的。不过,你可能会说服我!
所以,让我给你一个完整的瘦身。我将所有时间都转换为UTC,这需要在代码的声明部分中添加更多“语法”。
我编码的是博客,所以我有2条路线,一条列表路线和一条详细路线。详细信息路径需要较短的日期,并且帖子的名称假设组合为唯一。这就是它崩溃的原因。我在查询中传递了短路线。
根据时间的不同,我们可以回滚以使其为29或30.所以短日期必须正确,因为我在查询中没有足够的信息来确定如何将东部时间转换回UTC
我存储了一个DatePosted“短日期”,所有时间都是@ 12 AM用于SQL目的和FirstModified长日期。所以,我说,没问题,我只会将短日期存储在东部,然后将长日期转换为东部。不行,因为我不能让这些查询工作。
所以,我觉得我错了。日期应始终存储在东部时间(我想要使用的时间)。然后,如果用户想要更改时区(不是要求),我们只需浏览所有条目并进行更改。
也许,我在考虑这个错误,但在我的情况下,只会使用东部时区,所以无论如何都浪费时间。
期待对此有任何意见!
关键问题:
再次感谢您的帮助!
答案 0 :(得分:5)
将时间从UTC转换为东部时间不应添加“大量代码”。它应该是一个单行的。
我不确定你的第二点是什么意思 - 如果你详细说明它会有所帮助。如果您不知道所涉及的时区,您怎么能理解查询?如果您实际上假设它在东部时间,那么您可以进行适当的UTC转换。
一直使用本地时间通常是一个坏主意。如果你只涉及一个时区,那么它不会太坏,但如果你想要使用其他时区,那就太可怕了。 (这不仅仅是批量更新数据库的问题 - 它将是在整个应用程序中检查每一次使用日期的情况。)
转到UTC选项,IMO。
答案 1 :(得分:2)
这只是一个博客,而不是世界各地办事处使用的商业网络应用程序,所以我说继续使用东部时间。
如果您曾更改时区,并希望显示新时区,则一个SQL更新语句可以始终更新到新区域。
答案 2 :(得分:0)
以UTC格式存储时间并将其转换为您的视图/页面/无论是东方,还是更好,转换为客户端的本地时间。
此外,正如其他人所说,将UTC转换为东部时间不应该需要“大量代码”,因为您基本上可以减少一些时间,同时保持对夏令时的轻微意识。
例如,考虑
DateTime currentServerTime = DateTime.UtcNow.ToLocalTime();
答案 3 :(得分:0)
以UTC格式将值存储在db中,然后在客户端转换为本地时间。这样,每个客户都可以在本地参考框架中查看时间,而您无需关注特定的时区。