繁体   English   中英

使用Nullable DateTime时出现“ DateTime.ParseExact”错误

[英]Error in “DateTime.ParseExact” when using Nullable DateTime

我有一个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)

生成1-1-2015 14:00:00格式化的字符串。

如果您在1/1/2015 2:00:00 PMstring ,而不是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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM