![]() |
1
4
这些场景是提倡使用DST的案例。你做什么没关系 显示 只要你 商店 和 分类 UTC中的值。也就是说,如果正确使用UTC,这些场景中出现的问题就会得到解决。 是的,看到这样的记录会让人困惑:12:30、1:20、1:10、3:30,但如果这是根据UTC订购的记录(实际发生的情况),我认为这是正确的做法。 因此,通过用UTC记录所有内容,然后用UTC或相对时间(如“17分钟前…”)显示所有内容,可以完全避免这个问题。 如果你指的是用户提供的日期/时间,如评论中所建议的,我有一些坏消息告诉你:太糟糕了。我认为最好、最明显的解决方案是选择一个规则并用它运行。如果你真的需要完美地处理它,你的用户界面将需要扩展到以教育的方式处理这种每年只发生1小时的边缘情况,然后只处理不实时创建的事务(因为如果它们是实时的,你就知道DST等价物)。 |
![]() |
2
2
您需要存储时间偏移。 目前东海岸的时间是(往返形式)
即使东海岸被认为是-5,在夏令时,时间将是-4。 10月26日上午01:10,时间是
但是如果时钟超过02:00,我们又回到正常时间,你的时间将是
为了处理偏移量,.net从2.0sp1开始提供类型datetimeoffset。SQLServer2008还提供了数据类型datetimeoffset,它将帮助您存储该值。如果不使用SQLServer2008,可以使用往返格式将日期存储为字符串:
|
![]() |
3
1
按UTC排序,并在本地时间显示。 所以用户可能会看到这样的列表:
要么,要么表演 和 按UTC排序。 |
![]() |
4
1
如果您有人手工输入数据,那么祝您好运,除非他们以UTC时间输入数据。没有真正“正确”的方法来处理这个问题。如果您处理的日期不是用户输入的,比如事务发生的时间,只需将这些日期存储为UTC,这样生活就很好了。:) |
![]() |
5
1
一般来说,你的问题分为两部分:
这两个问题的处理应该类似,但在某些方面有一些单独的解决方法。至于1,最简单的选择是找出您的业务是否真的需要一种明确的方法来指定特定时间。很多应用程序都会忽略它(您上次使用的日期选择器是什么时候提供的?)简单假设任何一致的猜测算法都是足够的。如果输入了不存在的时间,您应该提供保护措施(即抛出错误)。 至于2,跳过的时间并不重要,因为您的数据库是UTC格式的。重复的一小时可能会令人困惑,特别是在时间戳的痕迹中。如果值得的话,可以考虑用一个时区标识符来格式化日期字符串,该标识符包含对夏令时偏移量的引用。大多数旧样式,即非olson,时区名称包括(est与edt、gmt与bst等)。这足以消除歧义。 处于紧要关头 .这可能是您所需要的,因为这个边界案例可能不值得太多地破坏显示。如果您需要更多的输出,您还可以使用UTC偏移量格式化时间戳,这将使转换在时间戳跟踪中非常明确。 |
![]() |
6
0
SQL Server有一个新的类型“datetimeoffset”,它可以很好地处理这一问题,因为可以使用不同的偏移量来处理同一时间。对于我的SQL Server 2005数据库,我使用了一个该类型的字符串文本,nvarchar(25)格式为“YYYY-MM-DD HH:MM:SS HH:MM”。 为此,我创建了将这些字符串转换为正确时间的例程。 |
![]() |
7
0
我在新西兰时间内解决了以下问题:
|
![]() |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
![]() |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
![]() |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
|
Dansih · .Net核心自定义身份验证方案 2 年前 |
![]() |
lolorekkk · 面板插入。NET WinForm 2 年前 |