gpt4 book ai didi

c# - 如何根据加利福尼亚州的当前时间将 UTC 转换为 PST 或 PDT?

转载 作者:太空狗 更新时间:2023-10-29 18:01:10 26 4
gpt4 key购买 nike

我不能使用 DateTime.Now 因为服务器不一定位于加州

最佳答案

两种选择:

1) 使用TimeZoneInfoDateTime:

using System;

class Test
{
static void Main()
{
// Don't be fooled - this really is the Pacific time zone,
// not just standard time...
var zone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
var utcNow = DateTime.UtcNow;
var pacificNow = TimeZoneInfo.ConvertTimeFromUtc(utcNow, zone);

Console.WriteLine(pacificNow);
}
}

2) 使用我的 Noda Time项目:)

using System;
using NodaTime;

class Test
{
static void Main()
{
// TZDB ID for Pacific time
DateTimeZone zone = DateTimeZoneProviders.Tzdb["America/Los_Angeles"];
// SystemClock implements IClock; you'd normally inject it
// for testability
Instant now = SystemClock.Instance.Now;

ZonedDateTime pacificNow = now.InZone(zone);
Console.WriteLine(pacificNow);
}
}

显然我有偏见,但我更喜欢使用 Noda Time,主要有以下三个原因:

  • 您可以使用 TZDB 时区信息,它在 Windows 之外更便于携带。 (您也可以使用基于 BCL 的区域。)
  • 各种不同类型的信息有不同的类型,这避免了 DateTime 试图表示三种不同类型的值,并且没有只表示“日期”或“a”的概念一天中的时间”
  • 它的设计考虑了可测试性

关于c# - 如何根据加利福尼亚州的当前时间将 UTC 转换为 PST 或 PDT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15013780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com