[英]Parse a string value to DateTime object?
我有一个文本框,它接受格式为MM / dd / yyyy hh:mm:ss的DataTime字符串。 例如 :
假设我选择了一个日期时间: "12/26/2013 17:37:03"
我正在尝试使用以下方法获取Datetime对象:
DateTime.TryParseExact(strDate, "MM/dd/yyyy hh:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None,out date);
但是每次它将字符串解析为:{ 1/1/0001 12:00:00 AM
}
请任何人在这里纠正我。
hh
是01
到12
。
使用HH
代替00
到23
。
例如;
string s = "12/26/2013 17:37:03";
DateTime dt = DateTime.Now;
bool success = DateTime.TryParseExact(s, "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);
Console.WriteLine("Is Parsing Successful? {0}", success);
Console.WriteLine(dt);
输出将是;
Is Parsing Successful? True
12/26/2013 5:37:03 PM
这里有demonstration
。
但是,即使您进行了解析,为什么仍要获取DateTime
值?
如果日期,时间和时区元素以s出现,则它们也必须以format指定的顺序出现。 如果format定义了没有时间元素的日期并且解析操作成功, 则所得的DateTime值的时间为午夜(00:00:00)。
注意 :请阅读ken2k的注释: 1和2 。 当你定义date
与像一个默认值DateTime date
; 您不知道转换成功与否,因为这两个都生成默认值DateTime( 1/1/0001 12:00:00 AM
)
DateTime date
将日期设为1/1/0001 12:00:00 AM
date
也将是1/1/0001 12:00:00 AM
这就是为什么我在代码中将其更改为DateTime dt = DateTime.Now;
您可以检查会话是否成功。 如果成功,则您的date
将为12/26/2013 17:37:03
,如果12/26/2013 17:37:03
,则您的日期将为1/1/0001 12:00:00 AM
除了其他人已经注意到的小时问题。 为什么要使用不变文化? 您的示例中的日期时间是美国。
您的时间为24小时格式。 因此,您需要使用HH(用于24小时格式)而不是hh(用于12小时格式)。
DateTime.TryParseExact(strDate, "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None,out date);
但是每次它将字符串解析为:{1/1/0001 12:00:00 AM}
这意味着您的解析失败。 您需要先检查解析结果 ,然后再继续。 您可以按照以下步骤进行操作。
if(DateTime.TryParseExact(strDate, "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None,out date))
{
//Parsing successful
}
else
{
//Parsing failed
}
这里的答案:
var TimeIn = Application.Current.Properties["date"].ToString();
DateTime InTime = DateTime.ParseExact(TimeIn, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.