我想打印一个即时的rfc2822在NodaTime。多么?
快速搜索会导致谷歌代码链接中断。我更喜欢内置的命名模式,而不是向ToString提供所有格式。
发布于 2015-04-04 09:57:07
我更喜欢内置的命名模式,而不是向ToString提供所有格式。
如果你的意思是你期待的是一个“标准”模式,也就是说,没有一个。
但是,很容易为此编写一个自定义模式--给您一个InstantPattern,而不是像您提到的那样在ToString中传递它。
幸运的是,格式化RFC 2822比解析RFC 2822要简单得多--特别是如果您乐于用UTC表示所有内容的话。从RFC 2822本身看,有两件事出现了:
OffsetDateTime而不是一个Instant。忽略“应该表达本地时间”部分,我会使用:
var pattern = InstantPattern.CreateWithInvariantCulture
("ddd d MMM yyyy HH:mm:ss '+0000'");
// Test it...
Console.WriteLine(pattern.Format(SystemClock.Instance.Now));(给未来读者的注意:从NodaTime2.0开始,使用IClock.GetCurrentInstant()而不是IClock.Now。)
样本输出:
Sat 4 Apr 2015 09:55:49 +0000如果您想沿着OffsetDateTimePattern路线走下去,您需要:
var pattern = OffsetDateTimePattern.CreateWithInvariantCulture
("ddd d MMM yyyy HH:mm:ss o<+HHmm>");然后得到输出,如:
Sat 4 Apr 2015 10:57:27 +0100https://stackoverflow.com/questions/29430545
复制相似问题