我将System.DateTime.Now存储在一个名为 StartDate 的变量中(变量的类型为DateTime?)。
我将其转换为字符串,如下所示:
string temp = StartDate.Value.ToString("yyyy-MM-dd HH:mm:ss")
现在临时值有" yyyy-MM-dd HH:mm:ss "。
现在我想再次将字符串 temp 转换为 DateTime ,所以,我的工作如下:
DateTime.ParseExact(temp,"yyyy-MM-dd HH:mm:ss",null)
但这不起作用。
它始终以与System.DatTime.Now相同的格式返回日期。它应返回" yyyy-MM-dd HH:mm:ss"格式。
答案 0 :(得分:3)
DateTime
类型的值不具有特定格式。该日期和时间存储为几个整数值(不每个组件一个,但更紧凑)。
解析字符串时,该字符串中表示的日期将存储为那些整数。
只有当您执行.ToString()
(可能具有某种格式)时,才能以特定格式获得该日期的字符串表示。
当您将鼠标悬停在调试器中的DateTime值上时,您会看到普通.ToString()
的结果,使用某些特定的当前文化。
Parse
和ParseExact
之间的区别在于Parse会尝试多种格式(并且可能会失败,例如" 2017年2月3日和#34; - FEB第3或第3个MAR? )使用ParseExact时,您自己提供一种或多种格式。在这两种情况下,您最终都会得到相同DateTime
类型的值。