【发布时间】:2014-03-13 20:01:52
【问题描述】:
我目前正在使用 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(..) 是什么重要吗?我使用的方法是马特约翰逊的堆栈example,他的日期是2000, 1, 1, 0, 0。我觉得这很奇怪,因为我知道的大多数日期类都使用纪元时间1970, 1, 1, 0 ,0,所以我更改了方法以包含纪元日期,但输出是相同的:
如何将时间转换为 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 输出中的偏移量是输入日期字符串:
这是期望的行为吗?
【问题讨论】: