c# - DateTime + TZ -> NodaTime 转换
问题描述
当我查看如何将时间转换为 NodaTime 时,我发现很多帖子,但没有一个关于我需要什么的直接答案。
我有:
- A DateTime object (DateTime myDateTime)
- An Olson timezone (var TZ = "America/Los_Angeles")
我想:
- A ZonedDateTime object (ZonedDateTime myZonedDateTime)
理想情况下,我正在寻找一些帮助者,例如:
var myZonedDateTime = ZonedDateTime.From(myDateTime, TZ);
但是我看到的所有示例都通过将日期转换为字符串然后解析字符串,这似乎很奇怪。
有一个 ZonedDateTime.FromDateTimeOffset() 方法,但是偏移量和 TimeZone 是不同的东西,因为 TZ 可以处理夏令时。
解决方案
听起来你只是想要:
var local = LocalDateTime.FromDateTime(myDateTime);
var zone = DateTimeZoneProviders.Tzdb[id];
var zoned = local.InZoneLeniently(zone);
除了:
- 您可能很想编写自己的规则而不是使用
InZoneLeniently
DateTimeZoneProviders.Tzdb.GetZoneOrNull(id)
如果您不确定 Noda Time 是否会识别区域 ID,您可能需要使用。
推荐阅读
- java - 有没有办法在 Android 中创建一个泛型类的片段?
- c# - Aws lambda 代理 Swagger 模板集成
- python - 如何在 Google Directory API 中正确使用“下一页令牌”
- list - Prolog没有以我想要/需要的方式显示输出
- google-bigquery - 带有目标表 vrs 插入语句的 bq 查询
- c# - .Net Core Connected Services - 共享类型
- java - 为什么两个 LocalDate 变量之间的比较不起作用?
- c# - 如何使用反序列化对象 c#
- c - 如何显示C中输入的总和和计算
- charts - 如何在颤动中制作动态图表?