【问题标题】:Parse string to DateTime with format "MMMM yyyy"将字符串解析为日期时间,格式为“MMMM yyyy”
【发布时间】:2017-08-31 13:31:54
【问题描述】:

我正在尝试将包含月份和年份(例如"April 2017")的字符串解析为DateTime

var foo = DateTime.ParseExact(dateToParse, "MMMM yyyy", null, DateTimeStyles.None);

但是结果的格式是04/01/2017 00:00:00,而不是April 2017。我错过了什么吗?

【问题讨论】:

  • 是的,您错过了 DateTime 没有隐式格式。这就是为什么你必须解析和格式化它的值。
  • 您错过了fooDateTime.ParseExact() 返回的结构,它是DateTime 类型的对象。 它没有格式。您正在使用默认格式对其进行字符串化。谷歌 DateTime.ToString() 以了解如何以您喜欢的任何方式将 DateTime 格式化为字符串。
  • 04/01/2017 是 2017 年 4 月,还是我错过了什么?
  • foo.ToString("MMMM yyyy")。瞧,你的“格式”回来了。
  • @demo - 通常的工作流程是:尽快将string 转换为DateTime,使用您想要的所有DateTime,然后尽可能晚地将其转换回string ,例如在向人类展示之前不久。

标签: c# date parsing datetime


【解决方案1】:

“我正在尝试解析字符串” 并将您的字符串解析为 DateTime 没有问题。

DateTime 有一个值但没有格式,如果你想再次获得另一个以特定格式表示 DateTime 的字符串,你必须使用 DateTime.ToString

例如:

DateTime dt = DateTime.ParseExact("April 2017", "MMMM yyyy", null, DateTimeStyles.None);
string monthAndYear = dt.ToString("MMMM yyyy"); // same as your original string "April 2017"

【讨论】:

    【解决方案2】:

    04/01/2017 00:00:00 是您解析的 DateTime 实例值的 default 格式的格式化输出。

    DateTime 没有隐式格式。

    如果你想以你提到的形式显示它,你需要做类似foo.ToString("MMMM yyyy")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      相关资源
      最近更新 更多