我目前正在使用 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();
}
我有三个具体问题。上面是我在解析日期时间字符串时使用的方法。我有一个format
字符串允许我如何解析输入。我的问题是:
我的事重要吗LocalDateTime(..)
是?我使用的方法是Matt Johnson的Stackexample https://stackoverflow.com/a/21300317/1913389,他的来了日期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
是输入日期字符串:
这是期望的行为吗?