Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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# 为什么DateTime TryParse将日期返回为{01/01/0001 00:00:00}?_C#_Asp.net_C# 4.0 - Fatal编程技术网

C# 为什么DateTime TryParse将日期返回为{01/01/0001 00:00:00}?

C# 为什么DateTime TryParse将日期返回为{01/01/0001 00:00:00}?,c#,asp.net,c#-4.0,C#,Asp.net,C# 4.0,我正在这样做 string[] formats = { "yyyy-MM-dd" }; DateTime outDate; DateTime.TryParseExact(DateTime.Now.ToString(), formats, new CultureInfo("en-US"), DateTimeStyles.None,

我正在这样做

string[] formats = { "yyyy-MM-dd" };

DateTime outDate;

DateTime.TryParseExact(DateTime.Now.ToString(), 
                       formats,
                       new CultureInfo("en-US"),
                       DateTimeStyles.None, 
                       out outDate);

interfaceoperation.LogDate = outDate;
interfaceoperation.LogTime = outDate;
LogDate
LogTime
属于
DateTime
类型

但它将
过期
值返回为
{01/01/0001 00:00:00}


为什么?

我认为问题在于日期的格式,我们必须添加正确的日期格式

DateTime.TryParseExact(DateTime.Now.ToString(), DateTime.Now.GetDateTimeFormats(), new CultureInfo("en-US"), DateTimeStyles.None, out outDate); Or you can retrieve it directly from the wafer you use date: string[] formats = {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", "M/d/yyyy h:mm", "M/d/yyyy h:mm", "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"}; DateTime.TryParseExact(DateTime.Now.ToString(),DateTime.Now.GetDateTimeFormats(), 新文化信息(“美国”), DateTimeStyles。无,过期); 否则,我们将不得不添加您日期的正确格式

DateTime.TryParseExact(DateTime.Now.ToString(), DateTime.Now.GetDateTimeFormats(), new CultureInfo("en-US"), DateTimeStyles.None, out outDate); Or you can retrieve it directly from the wafer you use date: string[] formats = {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", "M/d/yyyy h:mm", "M/d/yyyy h:mm", "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"}; 或者您可以直接从您使用的晶圆日期检索: 字符串[]格式={“M/d/yyyy h:mm:ss tt”,“M/d/yyyy h:mm tt”, “MM/dd/yyyy hh:MM:ss”、“M/d/yyyy h:MM:ss”, “M/d/yyyy hh:mm tt”,“M/d/yyyy hh tt”, “M/d/yyyy h:mm”、“M/d/yyyy h:mm”, “MM/dd/yyyy hh:MM”、“M/dd/yyyy hh:MM”};
好的,
DateTime.TryParseExact
在解析给定字符串失败时返回
false
DateTime.MinValue
(即
01/01/0001 00:00:00

此方法返回时,包含相当于的
DateTime
值 如果转换成功,则s中包含的日期和时间,或
MinValue
如果转换失败。如果 s或format参数为null、为空字符串或不包含 与格式中指定的模式相对应的日期和时间。 此参数在未初始化的情况下传递

似乎,您希望提及更多的
格式

   // Test value
   // Something like "10/08/2019 2:47:58 PM"
   string value = DateTime.Now.ToString(CultureInfo.GetCultureInfo("en-US"));

   ...

   string[] formats = { 
     "R",                  // RFC1123 e.g. 2019-10-08T14:39:47
     "yyyy-M-d",
     "yyyy-M-d H:m:s",
     "M/d/yyyy",           // en-US special: date only
     "M/d/yyyy H:m:s",     // en-US special: date and 24 hour time
     "M/d/yyyy h:m:s tt",  // en-US special: date and 12 hour time
   };       

   DateTime outDate;

   if (DateTime.TryParseExact(value, 
                              formats,
                              CultureInfo.GetCultureInfo("en-US"),
                              DateTimeStyles.None, out outDate)) {
       // Parsing succeeded

       interfaceoperation.LogDate = outDate;
       interfaceoperation.LogTime = outDate;
   }
   else
   {
       // Parsing failed
   }  

因为
CultureInfo(“en-US”)
DateTiem格式不是
yyyy-MM-dd
(而是
MM/dd/yyyy
),所以
DateTime.TryParseExact
返回
false
和0作为
DateTime
所以我应该做什么,因为我必须遵循这个格式为什么要解析
DateTime.Now.ToString()
?@Testingapps:您可以在
ToString
中更改格式,即
DateTime.Now.ToString(“yyyy-MM-dd”)
或在
格式中更改格式:
string[]格式={“yyyy-MM-dd”,“M/d/yyyy”}
A
DateTime
本身没有格式。它基本上是一个
Int64
值计数滴答声,因为
MinValue
。但是,它的
字符串
表示形式确实有一种格式。要将
字符串
解析为
日期时间
,必须使用
字符串
的格式。否则这是不可能的如果需要再次表示该
DateTime
值,可以使用强制格式。将
DateTime
转换为
字符串
仅将其解析回
DateTime
是毫无意义的。您试图完成的第一行代码是什么?将DateTime转换为字符串在本文的示例中,它可以被DateTime类型的另一个对象替换。