Asp.net 如何将棕地应用程序转换为使用基于用户的时区?
我负责提出一个解决方案,在棕地应用程序中实现特定于用户的时区。存储在数据库中的每个日期都存储在服务器的本地时间中。这些日期没有存储时区或偏移量信息 这是一个非常大的应用程序,所以我意识到这将是大量的工作。我担心的是,我们这样做的风险尽可能小。以前有人这样做过吗?如果是这样,最好的方法是什么?要避免哪些陷阱 当前的想法是,我们将日期列中具有有意义的时间成分的所有数据转换为UTC。然后,在表示层中,我们需要运行一个函数,在需要向用户显示日期时,将日期时间对象从UTC转换为用户的时区Asp.net 如何将棕地应用程序转换为使用基于用户的时区?,asp.net,sql-server,timezone,brownfield,Asp.net,Sql Server,Timezone,Brownfield,我负责提出一个解决方案,在棕地应用程序中实现特定于用户的时区。存储在数据库中的每个日期都存储在服务器的本地时间中。这些日期没有存储时区或偏移量信息 这是一个非常大的应用程序,所以我意识到这将是大量的工作。我担心的是,我们这样做的风险尽可能小。以前有人这样做过吗?如果是这样,最好的方法是什么?要避免哪些陷阱 当前的想法是,我们将日期列中具有有意义的时间成分的所有数据转换为UTC。然后,在表示层中,我们需要运行一个函数,在需要向用户显示日期时,将日期时间对象从UTC转换为用户的时区 这是一个带有SQ
这是一个带有SQLServer2008数据库的ASP.NET应用程序。我之所以提到这一点,是因为这些技术中可能有一些有用的工具,我不知道这些工具可以用来帮助事情变得更顺利。新代码中的这种要求几乎完全适合t-SQL的新datetimeoffset数据类型。但在遗留代码中,您将遇到一些问题 关于新的datetimeoffset类型,有一篇很好的文章叫做datetimeoffset,它很好地探讨了datetime的问题 简而言之,以下是您需要解决的问题:
- 您可以排除哪些仅日期字段(即时间必须始终为00:00)
- 日期时间记录在哪些时区
- 哪些时区有单独的夏令时或夏令时偏移
- 在您记录日期的所有年份中,夏令时的确切日期范围是什么
- 如何计算数据中每个日期时间值的偏移量
- 您将如何解释偏移量变化时的重叠小时数
TODATETIMEOFFSET (expression , time_zone)
当您读取datetimeoffset时,您会像以前一样获得本地时间,加上记录时与UTC的偏移量
我说这几乎是完美的,如果你需要将去年某个时候远程记录的日期时间转换为本地时间,你需要知道记录时间时本地偏移量是多少