我正在这样做
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
。
但是它返回outdate
的值为{01/01/0001 00:00:00}
。
为什么?
答案 0 :(得分:0)
我认为问题在于日期格式,我们将必须添加正确的日期格式。
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"};
答案 1 :(得分:0)
好吧,DateTime.TryParseExact
在无法解析给定的字符串时,都会返回false
和DateTime.MinValue
(即01/01/0001 00:00:00
)。
https://docs.microsoft.com/en-us/dotnet/api/system.datetime.tryparseexact?view=netframework-4.8
此方法返回时,包含等于的
DateTime
值 如果转换成功,则s中包含的日期和时间,或者MinValue
,如果转换失败。如果 s或format参数为null,为空字符串或不包含 与格式指定的模式相对应的日期和时间。 此参数未初始化传递。
看来,您想更多 formats
被提及:
// 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
}