我正在尝试使用以下代码将yyyymmdd格式的日期转换为yyyy-mm-dd:
tdrDate = DateTime.ParseExact(dateString, "yyyymmdd", null).ToString("yyyy-MM-dd");
这是唯一的问题,当我有一个日期,例如“ 20070205 ”时,我会回来“ 2007-01-05 ”。我不知道为什么会这样,感谢任何帮助。
答案 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
,我可能只是使用字符串格式化方法。