Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ddMMyy和ddMMyy日期格式之间的差异_C#_.net_Datetime - Fatal编程技术网

C# ddMMyy和ddMMyy日期格式之间的差异

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

我想知道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日”。奇怪

其实很简单

  • 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
的顺序。这与其他情况相同。