C# ddMMyy和ddMMyy日期格式之间的差异
我想知道C#中的C# ddMMyy和ddMMyy日期格式之间的差异,c#,.net,datetime,C#,.net,Datetime,我想知道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.InvariantC
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日”。奇怪 其实很简单
代表分钟李>mm
表示月份MM
请参阅MSDN上的说明。日期格式区分大小写 MM生成两位数的月数,MM生成两位数的分钟数。解释完毕。表示分钟。是几个月 自从你
System.Text.Encoding.ASCII.GetString(bb)
返回040215
作为string
,如果使用ddmmyy
格式进行解析,您的日部分将解析为4
,您的分钟部分将解析为2
,您的年部分将解析为2015
,并且它的当前日历默认为2029
DateTime
的其他部分将是它们的默认值。这就是为什么您的ddmm
将是
04/01/2015 00:02:00 // 4 Jan 2015 2 AM.
04/02/2015 00:00:00 // 4 Feb 2015 midnight
但是如果您使用ddMMyy
格式进行解析,您的日部分将被解析为4
,您的月部分将被解析为2
,您的年部分将被解析为2015
,您的DateTime
的其他部分仍将是它们的默认值
这就是为什么您的ddmm1
将
04/01/2015 00:02:00 // 4 Jan 2015 2 AM.
04/02/2015 00:00:00 // 4 Feb 2015 midnight
请在这里查看
mm
==minutes
和mm
=Months
这必须是您在使用格式字符串之前阅读的文档中的第一件事。如果两种方式的分钟部分都将解析为2,那么为什么第一种情况下是1月,另一种情况下是2月。@user2861226否。请重新阅读我的答案。当您使用ddmmyy
格式时,您的分钟部分将被解析为2
,但当您使用ddmmyy
格式时,您的月份部分将被解析为2
。在这两种情况下,所有其他未格式化的零件都将被指定其默认值。这就是为什么当您使用ddmmyy
时,您的DateTime
将是04/01/2015 00:02:00
,因为您在格式中只指定了日、分和年部分,所以DateTime
的其他部分(月、小时和秒)将被分配其默认值,即1
,0
和0
的顺序。这与其他情况相同。