无论什么愚蠢的原因,我在处理时区时都很困惑。从SQL查询转换为基于TimeZoneInfo的本地时间的datetimeoffset
当创建一个记录,我用:
getutcdate()
因此,例如,它是存储在一个DATETIMEOFFSET列,看起来像这样:
2015-07-03 20:44:21.0300000 +00:00
所以没有偏移,只是原始UTC。
现在,在服务器代码中,我想要做一些事情......我有一个查询让我只是为特定用户发布的文章的CreatedDate。我在一个数据表存储这样的:
Dim tz as TimeZoneInfo = GetUserTZInfo(User)
Dim dt as DataTable = GetArticleDates(User)
Dim MaxArticles As Integer = 5
Dim PostedThisMonth As Integer
Dim Remaining As Integer
我有限的用户元/月发表5篇文章,所以你可以看到,时间可以得到朝月的基础上,开始或结束摇摇欲坠用户的时区。这是明天的某个地方,然而到处都是同一时刻。
但我希望它是用户友好的,只是基于用户,而不是服务器时间。
我在上转换为本地时间,因为我DATETIMEOFFSET的数据类型的使用一些例子困难
任何人都可以提出关于如何实现以下最佳实践/方法:
- 搜索dt以查看与用户的月份相等的任何创建日期。
- 根据找到的内容为GeneratedMonth生成计数。
像我说的唯一的粘性区域是在月初或月底...基本上是12小时的窗口,当然是DST,但我不那么在意。
非常感谢帮助!
只需使用日期数学,并根据用户时区进行调整。你有用户的时区吗? –
@SeanLange我做的。我向你展示的示例函数为用户返回一个TimeZoneInfo对象。 – user1447679
在数据库中这样做会更有意义吗?否则,你必须返回所有的信息,然后过滤它。只会首先返回你想要的数据会更有效率。 –