如何在 C# 中根据时区偏移获取日期时间?

ome*_*ega 3 c# timezone

在c#中,我这样做

DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss")
Run Code Online (Sandbox Code Playgroud)

但它让我获得服务器时间。不过,我也有这种格式的偏移量,例如"-04:00"。如何结合偏移量来获取当地时间?

谢谢

Mat*_*int 6

如果您的意思是要获取服务器的系统本地时间(包括偏移量),请使用该DateTimeOffset.Now属性。然后根据需要格式化。

DateTimeOffset.Now.ToString("yyyy-MM-dd HH:mm:ss zzz")
Run Code Online (Sandbox Code Playgroud)

zzz说明符将偏移量生成为您要求的 ISO 8601 扩展格式的字符串。

如果您的意思是您有来自其他地方的 UTC 偏移量,并且您希望将其应用于服务器中的当前 UTC 时间,请执行以下操作:

TimeSpan offset = TimeSpan.Parse("-04:00");
DateTimeOffset now = DateTimeOffset.UtcNow.ToOffset(offset);
string result = now.ToString("yyyy-MM-dd HH:mm:ss zzz");
Run Code Online (Sandbox Code Playgroud)

这需要当前服务器时间,并应用该ToOffset函数来调整您提供的偏移量。

但请记住,偏移量与时区不同。您拥有的偏移量可能是当前日期和时间的偏移量,也可能是该时区中其他日期和时间的偏移量。例如,美国东部时间在夏令时期间为 UTC-4,但在标准时间期间为 UTC-5。请参阅时区标签 wiki中的“时区!= 偏移量” 。