日期格式化yyyymmdd到yyyy-mm-dd
我正在尝试使用以下代码将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。 毫米是几分钟。
它应该是:
DateTime.ParseExact(dateString, "yyyyMMdd", null).ToString("yyyy-MM-dd");
第一个日期格式字符串中的大写’MM’。
"yyyymmdd"
必须是"yyyyMMdd"
。
毫米是几分钟 。
格式字符串区分大小写,因此“mm”与“MM”不同。 您正在解析分钟 (“mm”),这就是为什么月份(“MM”)的值始终为默认值1的原因。
试试这个 :
tdrDate = DateTime.ParseExact(dateString, "yyyyMMdd", null).ToString("yyyy-MM-dd");
使用MM代替mm,mm代表分钟,MM代表月份,这就是它采用01(默认值为MM)的原因。
试试这个:DateTime.ParseExact(“20070205”,“yyyyMMdd”,null).ToString(“yyyy-MM-dd”)
免责声明我对C#的日期格式一无所知。
但我猜测问题是你在第一个格式字符串中使用了mm
,在第二个格式中使用了MM
。
一个方便的参考: SteveX编译:C#中的字符串格式
在这里,您要解析日期以创建日期对象,将日期对象格式化为字符串,以及丢弃日期对象。 这听起来比简单的字符串处理更多:
tdrDate = dateString.Substring(0,4) + '-' + dateString.Substring(4,2) + '-' + dateString.Substring(6,2);
除非你需要由DateTime.ParseExact()
执行的validation,如果给定一个无效的日期,它将抛出System.FormatException
,我可能只是使用字符串格式化方法。