日期格式化yyyymmdd到yyyy-mm-dd

时间:2010-11-22 22:17:03

标签: c# .net datetime

我正在尝试使用以下代码将yyyymmdd格式的日期转换为yyyy-mm-dd:

tdrDate = DateTime.ParseExact(dateString, "yyyymmdd", null).ToString("yyyy-MM-dd");

这是唯一的问题,当我有一个日期,例如“ 20070205 ”时,我会回来“ 2007-01-05 ”。我不知道为什么会这样,感谢任何帮助。

9 个答案:

答案 0 :(得分:15)

tdrDate = DateTime.ParseExact(dateString, "yyyyMMdd", null).ToString("yyyy-MM-dd");

你需要MM,而不是mm。毫米是几分钟。

答案 1 :(得分:8)

应该是:

DateTime.ParseExact(dateString, "yyyyMMdd", null).ToString("yyyy-MM-dd");
第一个日期格式字符串中的

Capital'MM'。

答案 2 :(得分:3)

"yyyymmdd"必须为"yyyyMMdd"

mm 适用于分钟

答案 3 :(得分:2)

格式字符串区分大小写,因此“mm”与“MM”不同。您正在解析分钟(“mm”),这就是为什么月份(“MM”)的值始终为默认值1的原因。

答案 4 :(得分:2)

试试这个:

tdrDate = DateTime.ParseExact(dateString, "yyyyMMdd", null).ToString("yyyy-MM-dd");

使用MM代替mm, 毫米是分钟& MM是月份,这就是它采用01(默认值为MM)的原因。

答案 5 :(得分:1)

试试这个: DateTime.ParseExact(“20070205”,“yyyyMMdd”,null).ToString(“yyyy-MM-dd”)

答案 6 :(得分:1)

免责声明我对C#的日期格式化一无所知。

但我猜测问题是您在第一个格式字符串中使用了mm,在第二个格式字符串中使用了MM

答案 7 :(得分:1)

答案 8 :(得分:0)

在这里,您要解析日期以创建日期对象,将日期对象格式化为字符串,并丢弃日期对象。这听起来比简单的字符串处理更多:

tdrDate = dateString.Substring(0,4) + '-' + 
    dateString.Substring(4,2) + '-' + 
    dateString.Substring(6,2);

除非你需要DateTime.ParseExact()执行的验证,否则如果给出无效日期将抛出System.FormatException,我可能只是使用字符串格式化方法。