如何为模棱两可的本地时间戳将DateTime转换为DateTimeOffset?

问题描述

我需要将数据写入C#应用程序中的sql Server表中。表中时间戳字段的数据类型为DateTimeOffset,在我的应用程序中,我可以将时间戳作为本地DateTime对象或UTC DateTime对象获取。如何将这些时间戳转换为DateTimeOffset并包括本地时区的偏移信息?我的意思是说,我不希望DateTimeOffset对象的UTC时间和偏移量为0:00,而是希望始终包含本地时区的偏移量。

编辑:看起来像从new DateTimeOffset(value.Timestamp.LocalTime)这样的本地时间戳创建一个DateTimeOffset对象似乎很好,但是我不了解DST时间更改发生时怎么可能。当我在DST更改前后打印出两个本地DateTime对象时,得到以下结果:

// Before DST change
value.Timestamp.LocalTime
{25.10.2020 02:00:00}
    Date: {25.10.2020 00:00:00}
    Day: 25
    DayOfWeek: Sunday
    DayOfYear: 299
    Hour: 2
    Kind: Local
    Millisecond: 0
    Minute: 0
    Month: 10
    Second: 0
    Ticks: 637391880000000000
    TimeOfDay: {02:00:00}
    Year: 2020

// After DST change
value.Timestamp.LocalTime
{25.10.2020 02:00:00}
    Date: {25.10.2020 00:00:00}
    Day: 25
    DayOfWeek: Sunday
    DayOfYear: 299
    Hour: 2
    Kind: Local
    Millisecond: 0
    Minute: 0
    Month: 10
    Second: 0
    Ticks: 637391880000000000
    TimeOfDay: {02:00:00}
    Year: 2020

这些DateTime对象似乎是相同的,但是当我查看写入数据库的数据时,我看到了:

Converted DateTime before and after DST change

这怎么可能?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)