在车队管理中,跟踪器跨时区移动并使用始终为 UTC 的时间戳存储其位置。这很好,因为它必须坚持一个时区。否则,如果它更改时区,它可能有两个具有相同时间戳的不同位置(i.e. for daylight saving time).
如果车队经理使用我的软件查看数据,他想查看他当地时区的时间,即使他看到混淆的时间戳(他会知道为什么)。
为了实现这一点,我将它们作为 UTC 时间存储在数据库中,并将它们转换为显示它们的本地时间。我用:
DateTime.SpecifyKind(date, dateTimeKind)
DateTime.ToUniversalTime()
DateTime.ToLocalTime()
所以每个人都应该像高水位的蛤蜊一样快乐,但是有些表被设置为 DataGridView 的 DataSource (Windows.System.Forms.DataGridView.DataSource = System.Data.DataTable)
。这本身还不错,但我不知道如何在两者之间进行转换。
如果我可以使用DataGridViewCellStyle
.Format 属性来指示要显示的时区,我会很高兴,但据我所知,这不是一个选项。现在在某些表中,两次都存储在数据库中,因此用户决定显示/隐藏哪个时间,但是如果您必须DateTime
将数据库中的每一列加倍并添加显示/隐藏功能,这真的很痛苦在它的旁边。
你建议哪种方式?我已经阅读了RowCreatedEvent
(这里),但我没有构建 Web 应用程序。