“;DateTime.ParseExact”;当使用可为null的DateTime时
本文关键字:DateTime null ParseExact | 更新日期: 2023-09-27 18:20:05
我有一个Nullable DateTime
,我得到了一个错误:
附加信息:字符串未被识别为有效的DateTime。
我看了看这里,这里,这里还有这里。我也尝试过String.Format("{0:s}", dateTime)
,但它不会改变我的DateTime
格式。我的代码如下,
if (person.JsonData.PasswordChangeRequestTime != null)
{
DateTime data;
data = DateTime.ParseExact(((DateTime)person.JsonData.PasswordChangeRequestTime).Date.ToStringDateTime(), "dd'-'MM'-'yyyy HH':'mm':'ss", CultureInfo.InvariantCulture);
person.setColumnValue("passwordchangerequesttime", data);
}
我的一个DateTime
是这样的:1/1/2015 2:00:00 PM
我想要它们的格式1-1-2015 14:00:00
我的DateTime.ParseExact
函数出了什么问题?
顺便说一下,我不想使用subString
函数!
您不需要做任何事情。
您的(DateTime)person.JsonData.PasswordChangeRequestTime
已经为DateTime
,您看到的可能是在调试器或其他程序中。
DateTime
没有任何隐式格式。它只有日期和时间值。只有当你得到文本(字符串)表示时,格式概念才重要,这通常是用DateTime.ToString()
方法完成的。
如果你想获得它的精确字符串表示,你可以使用ToString
方法,并使用适当的格式和区域性设置,如;
((DateTime)person.JsonData.PasswordChangeRequestTime)
.ToString("d/M/yyyy h:mm:ss tt", CultureInfo.InvariantCulture)
生成1/1/2015 2:00:00 PM
和
((DateTime)person.JsonData.PasswordChangeRequestTime)
.ToString("d-M-yyyy HH:mm:ss", CultureInfo.InvariantCulture)
生成CCD_ 15格式的字符串。
如果你的1/1/2015 2:00:00 PM
是string
,而不是DateTime
,你需要先用正确的格式将其解析为DateTime
,然后用正确的形式生成它的字符串表示。
string s = "1/1/2015 2:00:00 PM";
DateTime dt;
if(DateTime.TryParseExact(s, "d/M/yyyy h:mm:ss tt", CultureInfo.InvariantCulture,
DateTimeStyles.None, out dt))
{
dt.ToString("d-M-yyyy HH:mm:ss", CultureInfo.InvariantCulture);
// Generates 1-1-2015 14:00:00
}