我正在尝试学习如何在我的应用程序中使用 NodaTime,但找不到很多如何使用该库执行某些操作的示例。
鉴于:
- 日期/时间文本
"2012/08/30 17:45:00"
- 格式字符串是
"yyyy/MM/dd HH:mm:ss"
- 与 UTC 的日期/时间偏移量是
-5
我如何用 NodaTime 解析这个以获得一个
OffsetDateTime
?Instant
?
我正在尝试学习如何在我的应用程序中使用 NodaTime,但找不到很多如何使用该库执行某些操作的示例。
鉴于:
"2012/08/30 17:45:00"
"yyyy/MM/dd HH:mm:ss"
-5
我如何用 NodaTime 解析这个以获得一个
OffsetDateTime
?Instant
?使用纯 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 时间 - 而不是偏移量。
您也可以只使用DateTimeOffset
BCL 中的文本解析,然后执行以下操作:
var odt = OffsetDateTime.FromDateTimeOffset(dto);
无论哪种方式,一旦你有了OffsetDateTime
,它就可以转换为Instant
:
var instant = odt.ToInstant();