诸如CreatedDate和ModifiedDate之类的列通常在SQL表中使用。我认为,存储时间的UTC值将有助于消除对托管应用程序的服务器位置的依赖性。随着云计算越来越熟悉(甚至排除它),应用程序可以在任何时区和世界任何地方托管。
通过对这些字段使用UTC值,业务逻辑可以始终假定字段为UTC并转换每个本地化要求的日期。
我的思维过程是否正确?这种方法有任何缺点吗?是否更容易存储特定于区域的时间?
欣赏你的想法!
答案 0 :(得分:5)
恕我直言,即使是本地唯一的应用程序也应该存储UTC,如果不是出于其他原因,那么至少要正确处理夏令时时间调整。对于分发的任何内容,UTC是必须的。
然后,客户端可以显示本地化的时间,因为所有客户端平台都支持将UTC显示为本地时间。
答案 1 :(得分:3)
SQL 2008有一个名为datetimeoffset的数据类型,它也可以存储时区。这意味着你可以吃蛋糕并吃掉它!
你有点需要存储UTC版本,因为否则你有“那是凌晨2:30那个?”每当夏令时发生时。但是使用datetimeoffset你很好。
如果只存储UTC版本,则需要考虑客户端所在的时区为其显示。但是当夏令时发生时,所有时间都会移动一个小时,所以你仍然没有运气。
有趣的是,Mitch Wheat(发表评论你的问题)住在珀斯,他最近才引入了夏令时。我写了一篇关于此的博客: http://msmvps.com/blogs/robfarley/archive/2006/10/25/The-horror-of-daylight-savings-_2800_sorry-Perth_2900_.aspx
那么,看看你怎么样。我肯定会推荐datetimeoffset,这样你就可以在夏天显示时间存储为下午5点。
罗布