我目前正在使用 NodaTime,因为我在处理 C#DateTime
类中的时区时遇到了挫折。到目前为止,我真的很高兴。
public static string nodaTimeTest(string input)
{
var defaultValue = new OffsetDateTime(new LocalDateTime(2000, 1, 1, 0, 0), Offset.Zero);
var pattern = OffsetDateTimePattern.Create("yyyy-MM-dd'T'HH:mm:sso<m>", CultureInfo.InvariantCulture, defaultValue);
var result = pattern.Parse(input).Value;
return result.ToString();
}
我有三个具体问题。以上是我在解析 dateTime 字符串时使用的方法。我有一个format
字符串,它允许我如何解析输入。我的问题是:
我LocalDateTime(..)
是什么重要吗?我使用的方法是 Matt Johnson 的 Stack示例,他的带有 date 2000, 1, 1, 0, 0
。我觉得这很奇怪,因为我知道的大多数日期类都使用 Epoch time 1970, 1, 1, 0 ,0
,所以我更改了方法以包含 Epoch 日期,但输出是相同的:
如何将时间转换为 Unix 时间戳?似乎没有内置方法可以这样做。
使用这种方法:
public static string nodaTimeTest6(string input, int timeZone)
{
// var defaultValue = new OffsetDateTime(new LocalDateTime(2000, 1, 1, 0, 0), Offset.Zero);
var defaultValue = new OffsetDateTime(new LocalDateTime(2000, 1, 1, 0, 0), Offset.FromHours(timeZone));
var pattern = OffsetDateTimePattern.Create("yyyy-MM-dd'T'HH:mm:sso<m>", CultureInfo.InvariantCulture, defaultValue);
var result = pattern.Parse(input);
return result.Value.ToString();
}
我正在用这种方法测试 NodaTime 的能力——具体来说,我想知道我是否可以解析在内部定义了偏移量的日期/时间,同时,我的timeZone
输入还允许输入时区/偏移量。有趣的是,我的输入timeZone
被忽略了,所以我的输出中的偏移量nodaTimeTest6
是输入日期字符串:
这是期望的行为吗?