【发布时间】:2010-11-22 22:17:02
【问题描述】:
我正在尝试使用以下代码将 yyyymmdd 格式的日期转换为 yyyy-mm-dd:
tdrDate = DateTime.ParseExact(dateString, "yyyymmdd", null).ToString("yyyy-MM-dd");
这行得通的唯一问题是,当我有这样的日期“20070205”时,我会返回“2007-01-05”。我不知道为什么会这样,感谢任何帮助。
【问题讨论】:
我正在尝试使用以下代码将 yyyymmdd 格式的日期转换为 yyyy-mm-dd:
tdrDate = DateTime.ParseExact(dateString, "yyyymmdd", null).ToString("yyyy-MM-dd");
这行得通的唯一问题是,当我有这样的日期“20070205”时,我会返回“2007-01-05”。我不知道为什么会这样,感谢任何帮助。
【问题讨论】:
tdrDate = DateTime.ParseExact(dateString, "yyyyMMdd", null).ToString("yyyy-MM-dd");
你需要的是 MM,而不是 mm。 mm 代表分钟。
【讨论】:
应该是:
DateTime.ParseExact(dateString, "yyyyMMdd", null).ToString("yyyy-MM-dd");
第一个日期格式字符串中的大写“MM”。
【讨论】:
"yyyymmdd" 必须是 "yyyyMMdd"。
mm 是 分钟。
【讨论】:
试试这个:
tdrDate = DateTime.ParseExact(dateString, "yyyyMMdd", null).ToString("yyyy-MM-dd");
使用 MM 代替 mm, mm 代表分钟 & MM 代表月份,这就是为什么它采用 01(MM 的默认值)。
【讨论】:
格式字符串区分大小写,因此“mm”与“MM”不同。您正在解析 分钟 ("mm"),这就是为什么月 ("MM") 的值始终为默认值 1 的原因。
【讨论】:
试试这个: DateTime.ParseExact("20070205", "yyyyMMdd", null).ToString("yyyy-MM-dd")
【讨论】:
免责声明我对 C# 的日期格式一无所知。
但我猜问题是您在第一个格式字符串中使用了mm,而在第二个格式字符串中使用了MM。
【讨论】:
【讨论】:
在这里,您将解析日期以创建日期对象,将日期对象格式化为字符串,并丢弃日期对象。这听起来比简单的字符串处理工作更多:
tdrDate = dateString.Substring(0,4) + '-' +
dateString.Substring(4,2) + '-' +
dateString.Substring(6,2);
除非您需要由DateTime.ParseExact() 执行的验证,如果给定的日期无效,则会抛出System.FormatException,否则我可能只使用字符串格式化方法。
【讨论】: