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”}
ADateTime
本身没有格式。它基本上是一个Int64
值计数滴答声,因为MinValue
。但是,它的字符串
表示形式确实有一种格式。要将字符串
解析为日期时间
,必须使用字符串
的格式。否则这是不可能的如果需要再次表示该DateTime
值,可以使用强制格式。将DateTime
转换为字符串
仅将其解析回DateTime
是毫无意义的。您试图完成的第一行代码是什么?将DateTime转换为字符串在本文的示例中,它可以被DateTime类型的另一个对象替换。