首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以rfc2822的形式在NodaTime中打印Instant?

如何以rfc2822的形式在NodaTime中打印Instant?
EN

Stack Overflow用户
提问于 2015-04-03 10:35:30
回答 1查看 239关注 0票数 1

我想打印一个即时的rfc2822在NodaTime。多么?

快速搜索会导致谷歌代码链接中断。我更喜欢内置的命名模式,而不是向ToString提供所有格式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-04 09:57:07

我更喜欢内置的命名模式,而不是向ToString提供所有格式。

如果你的意思是你期待的是一个“标准”模式,也就是说,没有一个。

但是,很容易为此编写一个自定义模式--给您一个InstantPattern,而不是像您提到的那样在ToString中传递它。

幸运的是,格式化RFC 2822比解析RFC 2822要简单得多--特别是如果您乐于用UTC表示所有内容的话。从RFC 2822本身看,有两件事出现了:

  • “日的日期和时间应表示当地时间.”如果您想这样做,您应该格式化一个OffsetDateTime而不是一个Instant
  • 每周的一天是可选的,但以我的经验来看,它很有可能出现在那里。

忽略“应该表达本地时间”部分,我会使用:

代码语言:javascript
复制
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。)

样本输出:

代码语言:javascript
复制
Sat 4 Apr 2015 09:55:49 +0000

如果您想沿着OffsetDateTimePattern路线走下去,您需要:

代码语言:javascript
复制
var pattern = OffsetDateTimePattern.CreateWithInvariantCulture
    ("ddd d MMM yyyy HH:mm:ss o<+HHmm>");

然后得到输出,如:

代码语言:javascript
复制
Sat 4 Apr 2015 10:57:27 +0100
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29430545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档