在与用户所在时区不同的时区中创建 DateTimeOffset
Creating a DateTimeOffset in a Timezone Different to the One the User is In
我想创建一个 DateTimeOffset
,这是我指定的日期,但在另一个时区。
这有一点问题。 2 件事:
-1- 我不在我感兴趣的时区,即它不是我当地的时区。
-2- 在撰写本文时,由于夏令时,奥克兰的偏移量是非标准的。平时是12,现在是13。
所以,我的尝试如下:
var someDate = new DateTimeOffset(selectedDate, TimeZoneInfo.FindSystemTimeZoneById("New Zealand Standard Time").BaseUtcOffset);
这不起作用,因为 BaseUtcOffset
总是 returns 标准偏移量,即 12,而不是 13。
我怎么知道的。
请记住,在建议转换为 UTC 等之前,我不在那个时区。所以我在我的电脑上创建的任何日期都将在 E. Australia Daylight Time
时区,而不是 New Zealand Standard Time
.
您可以使用它来获得 selectedDate
日期的正确偏移量:
TimeZoneInfo.FindSystemTimeZoneById("New Zealand Standard Time").GetUtcOffset(selectedDate)
如果你输入今天的日期,它 returns 13.
如果 selectedDate
是 UTC 可能是最好的。不知道如果是当地时间会有什么影响
我想创建一个 DateTimeOffset
,这是我指定的日期,但在另一个时区。
这有一点问题。 2 件事:
-1- 我不在我感兴趣的时区,即它不是我当地的时区。
-2- 在撰写本文时,由于夏令时,奥克兰的偏移量是非标准的。平时是12,现在是13。
所以,我的尝试如下:
var someDate = new DateTimeOffset(selectedDate, TimeZoneInfo.FindSystemTimeZoneById("New Zealand Standard Time").BaseUtcOffset);
这不起作用,因为 BaseUtcOffset
总是 returns 标准偏移量,即 12,而不是 13。
我怎么知道的。
请记住,在建议转换为 UTC 等之前,我不在那个时区。所以我在我的电脑上创建的任何日期都将在 E. Australia Daylight Time
时区,而不是 New Zealand Standard Time
.
您可以使用它来获得 selectedDate
日期的正确偏移量:
TimeZoneInfo.FindSystemTimeZoneById("New Zealand Standard Time").GetUtcOffset(selectedDate)
如果你输入今天的日期,它 returns 13.
如果 selectedDate
是 UTC 可能是最好的。不知道如果是当地时间会有什么影响