我尝试使用以下代码将yyyymmdd格式的日期转换为yyyy-mm-dd:
tdrDate = DateTime.ParseExact(dateString, "yyyymmdd", null).ToString("yyyy-MM-dd");
这是可行的,唯一的问题是,当我有一个日期,如“20070205”我回来“2007-01-05"。我不知道为什么会这样,任何帮助都很感激。
wj8zmpe11#
tdrDate = DateTime.ParseExact(dateString, "yyyyMMdd", null).ToString("yyyy-MM-dd");
你需要MM,而不是MM。mm是分钟。
waxmsbnn2#
它应该是:
DateTime.ParseExact(dateString, "yyyyMMdd", null).ToString("yyyy-MM-dd");
第一个日期格式字符串中的大写'MM'。
c8ib6hqw3#
"yyyymmdd"必须是"yyyyMMdd"。
"yyyymmdd"
"yyyyMMdd"
mm是分钟。
efzxgjgh4#
试试这个:
使用MM代替mm,mm代表分钟,MM代表月份,这就是为什么它采用01(默认值MM)。
vbkedwbf5#
格式字符串区分大小写,因此“mm”与“MM”不同。您正在解析 minutes(“mm”),这就是为什么months(“MM”)的值始终为默认值1的原因。
aij0ehis6#
试试这个:DateTime.ParseExact(“20070205”,“yyyyMMDD”,null).ToString(“yyyy-MM-dd”)
vom3gejh7#
免责声明我对C#的日期格式一无所知。
但我猜问题是你在第一个格式字符串中使用了mm,而在第二个格式字符串中使用了MM。
mm
MM
zdwk9cvp8#
一个方便的参考:SteveX Compiled: String formatting in C#
tcbh2hod9#
在这里,您将解析日期以创建日期对象,将日期对象格式化为字符串,然后丢弃日期对象。这听起来比简单的字符串处理工作量更大:
tdrDate = dateString.Substring(0,4) + '-' + dateString.Substring(4,2) + '-' + dateString.Substring(6,2);
如果你的目标是.Net 5或更高版本,你可以使用字符串插值:
tdrDate = $"{dateString.Substring(0,4)}-{dateString.Substring(4,2)}-{dateString.Substring(6,2)}";
队伍有点长。如果你的目标是.Net 7或更高版本,也许:
tdrDate = $"{ dateString.Substring(0,4) }-{ dateString.Substring(4,2) }-{ dateString.Substring(6,2) }";
我得承认,我还没有找到一种方法来将长插值字符串拆分成我真正喜欢的行。除非您需要DateTime.ParseExact()执行的验证(如果给定无效日期,它将抛出System.FormatException),否则我可能只使用字符串格式化方法。
DateTime.ParseExact()
System.FormatException
9条答案
按热度按时间wj8zmpe11#
你需要MM,而不是MM。mm是分钟。
waxmsbnn2#
它应该是:
第一个日期格式字符串中的大写'MM'。
c8ib6hqw3#
"yyyymmdd"
必须是"yyyyMMdd"
。mm是分钟。
efzxgjgh4#
试试这个:
使用MM代替mm,mm代表分钟,MM代表月份,这就是为什么它采用01(默认值MM)。
vbkedwbf5#
格式字符串区分大小写,因此“mm”与“MM”不同。您正在解析 minutes(“mm”),这就是为什么months(“MM”)的值始终为默认值1的原因。
aij0ehis6#
试试这个:DateTime.ParseExact(“20070205”,“yyyyMMDD”,null).ToString(“yyyy-MM-dd”)
vom3gejh7#
免责声明我对C#的日期格式一无所知。
但我猜问题是你在第一个格式字符串中使用了
mm
,而在第二个格式字符串中使用了MM
。zdwk9cvp8#
一个方便的参考:SteveX Compiled: String formatting in C#
tcbh2hod9#
在这里,您将解析日期以创建日期对象,将日期对象格式化为字符串,然后丢弃日期对象。这听起来比简单的字符串处理工作量更大:
如果你的目标是.Net 5或更高版本,你可以使用字符串插值:
队伍有点长。如果你的目标是.Net 7或更高版本,也许:
我得承认,我还没有找到一种方法来将长插值字符串拆分成我真正喜欢的行。
除非您需要
DateTime.ParseExact()
执行的验证(如果给定无效日期,它将抛出System.FormatException
),否则我可能只使用字符串格式化方法。