在与用户所在时区不同的时区中创建 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 可能是最好的。不知道如果是当地时间会有什么影响