我想知道C#中ddMMyy
和ddmmyy
日期格式之间的区别。
当我尝试将字节数组转换为日期时,相同的字节会为这两种格式生成不同的日期。
byte[] bb = { 0x30, 0x34, 0x30, 0x32, 0x31, 0x35 };
DateTime ddmm = DateTime.ParseExact(System.Text.Encoding.ASCII.GetString(bb), "ddmmyy", System.Globalization.CultureInfo.InvariantCulture);
DateTime ddmm1 = DateTime.ParseExact(System.Text.Encoding.ASCII.GetString(bb), "ddMMyy", System.Globalization.CultureInfo.InvariantCulture);
ddmm
变量已于2015年1月4日'虽然ddmm1
已经在2015年2月4日'。奇怪!!
答案 0 :(得分:3)
答案 1 :(得分:2)
mm
specifier是几分钟。 MM
specifier已有好几个月了。
自你的
System.Text.Encoding.ASCII.GetString(bb)
将040215
作为string
返回,如果您使用ddmmyy
格式进行解析,则您的日期部分将被解析为4
,您的分钟部分将被解析为{{1} 1}}和您的年份部分将被解析为2
,因为您使用InvariantCulture
并且默认情况下当前日历的Calendar.TwoDigitYearMax
property为2015
。
2029
的其他部分将是其默认值。这就是你的DateTime
将成为的原因;
ddmm
但是,如果您使用04/01/2015 00:02:00 // 4 Jan 2015 2 AM.
格式进行解析,那么您的日期部分将被解析为ddMMyy
,您的月份部分将被解析为4
,您的年份部分将被解析为{{ 1}}以及2
的其他 部分将是其默认值。
这就是你2015
将会出现的原因;
DateTime
答案 2 :(得分:0)
日期格式区分大小写。
MM 生成两位数的月份数,而 mm 生成两位数的分钟数。解释为here。