5

我有一个DateTimeOffset变量,其值为 11-11-1989 16:00:00 +03:30。我可以调用ToLocalTime()它的方法,它显示 11-11-1989 18:00:00 +05:30。(我在印度:p)

我正在寻找这样的东西: variable1.ToOffset(<timespan>)

如果我给这个函数 a timespan3 小时,它应该返回我 11-11-1989 19:00:00 +06:30

我试图更改偏移量,但偏移量属性是只读的。有谁知道任何解决方法?

4

2 回答 2

10

这是愚蠢的。但是有一个名为的函数ToOffset,它timespan作为输入参数!

于 2013-05-30T10:53:50.507 回答
6

对于未来的读者:我有一个DateTimeOffset没有时区的解析。因此,要仅更改时区,而不影响实际时间,您必须像底层代码一样再次减去时间跨度。

例如2018-03-27T11:00:00 +00:00 => 2018-03-27T11:00:00 +02:00

static DateTimeOffset ChangeUtcToCest(DateTimeOffset original)
{
    TimeZoneInfo cetInfo = TimeZoneInfo.FindSystemTimeZoneById("Central Europe Standard Time");
    DateTimeOffset cetTime = TimeZoneInfo.ConvertTime(original, cetInfo);
    return original
        .Subtract(cetTime.Offset)
        .ToOffset(cetTime.Offset);
}
于 2018-03-27T16:46:25.063 回答