繁体   English   中英

将字符串值解析为DateTime对象?

[英]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 }

请任何人在这里纠正我。

hh0112

使用HH代替0023

例如;

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值?

DateTime.TryParseExact方法

如果日期,时间和时区元素以s出现,则它们也必须以format指定的顺序出现。 如果format定义了没有时间元素的日期并且解析操作成功, 则所得的DateTime值的时间为午夜(00:00:00)。

注意 :请阅读ken2k的注释: 12 当你定义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.

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