4

我正在尝试学习如何在我的应用程序中使用 NodaTime,但找不到很多如何使用该库执行某些操作的示例。

鉴于:

  • 日期/时间文本"2012/08/30 17:45:00"
  • 格式字符串是"yyyy/MM/dd HH:mm:ss"
  • 与 UTC 的日期/时间偏移量是-5

我如何用 NodaTime 解析这个以获得一个

  • OffsetDateTime?
  • Instant?
4

1 回答 1

4

使用纯 NodaTime 代码,目前没有用于OffsetDateTime. 请参阅记录的限制。但是,您可以通过分别解析 aLocalDateTime和 an来构造一个Offset

var ldt = LocalDateTimePattern.CreateWithInvariantCulture("yyyy/MM/dd HH:mm:ss")
                              .Parse("2012/08/30 17:45:00")
                              .Value;

var o = OffsetPattern.GeneralInvariantPattern
                     .Parse("-05")
                     .Value;

var odt = new OffsetDateTime(ldt, o);

有一个类似的解析器Instant,但它需要 UTC 时间 - 而不是偏移量。

您也可以只使用DateTimeOffsetBCL 中的文本解析,然后执行以下操作:

var odt = OffsetDateTime.FromDateTimeOffset(dto);

无论哪种方式,一旦你有了OffsetDateTime,它就可以转换为Instant

var instant = odt.ToInstant();
于 2013-03-12T23:06:00.573 回答