C# 是否将字符串值解析为DateTime对象?

C# 是否将字符串值解析为DateTime对象?,c#,asp.net,string,datetime,C#,Asp.net,String,Datetime,我有一个文本框,它接受格式为MM/dd/yyyy hh:MM:ss的数据时间字符串。 例如: 假设我选择了一个日期时间: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:

我有一个文本框,它接受格式为MM/dd/yyyy hh:MM:ss的数据时间字符串。 例如:

假设我选择了一个日期时间: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}

请大家在这里纠正我。

是01到12的

请改为使用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
这里有一个

但是,即使进行了解析,为什么仍然会得到DateTime值

如果日期、时间和时区元素存在于中,则它们也必须 按格式指定的顺序显示。如果格式定义了一个带有 没有时间元素,解析操作成功,结果 DateTime值的时间为午夜00:00:00

注:请阅读的评论:和。使用默认值(如DateTime日期)定义日期时;您无法知道转换是否成功,因为它们都会生成默认值DateTime 1/1/0001 12:00:00 AM

日期时间日期将日期设置为1/1/0001 12:00:00 AM 如果解析失败,则日期也将为1/1/0001 12:00:00 AM 这就是为什么我在代码中将它改为DateTime dt=DateTime.Now;你可以检查你的对话是否成功。如果成功,您的日期将为2013年12月26日17:37:03,如果不成功,您的日期将为1/1/0001 12:00:00 AM

是01到12

请改为使用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
这里有一个

但是,即使进行了解析,为什么仍然会得到DateTime值

如果日期、时间和时区元素存在于中,则它们也必须 按格式指定的顺序显示。如果格式定义了一个带有 没有时间元素,解析操作成功,结果 DateTime值的时间为午夜00:00:00

注:请阅读的评论:和。使用默认值(如DateTime日期)定义日期时;您无法知道转换是否成功,因为它们都会生成默认值DateTime 1/1/0001 12:00:00 AM

日期时间日期将日期设置为1/1/0001 12:00:00 AM 如果解析失败,则日期也将为1/1/0001 12:00:00 AM
这就是为什么我在代码中将它改为DateTime dt=DateTime.Now;你可以检查你的对话是否成功。如果成功,您的日期将是2013年12月26日17:37:03,如果不成功,您的日期将是1/1/0001 12:00:00 AM

除了其他人已经注意到的时间问题。为什么要使用不变文化?您的示例中的日期时间是US。

除了其他人已经注意到的小时问题之外。为什么要使用不变文化?您的示例中的日期时间是US。

您的时间是24小时格式的。因此,您需要使用用于24小时格式的hh,而不是用于12小时格式的hh

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
}

你的时间是24小时制的。因此,您需要使用用于24小时格式的hh,而不是用于12小时格式的hh

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);
答案如下:

var TimeIn = Application.Current.Properties["date"].ToString();
DateTime InTime = DateTime.ParseExact(TimeIn, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);

除了您的答案之外,值得一提的是,使用tryparsexxx意味着检查返回的布尔值。1/1/0001是datetime的默认值,但不应用于测试解析方法是否成功。不带if…=的tryparsexxtrue/false不应该存在。但即使您正在解析,为什么仍然会得到DateTime值?->如果输入与指定的模式不匹配,则TryParseXXX不会修改out参数。在这种情况下,DateTime有一个默认值,因为它是一个值类型。@ken2k您完全正确。谢谢更新了我的答案和你的建议。啊@SonerGönül这真的很简单,不知道我怎么会错过。感谢您的更正。除了您的答案之外,值得一提的是,使用tryparsexxx意味着检查返回的布尔值。1/1/0001是datetime的默认值,但不应用于测试解析方法是否成功。不带if…=的tryparsexxtrue/false不应该存在。但即使您正在解析,为什么仍然会得到DateTime值?->如果输入与指定的模式不匹配,则TryParseXXX不会修改out参数。在这种情况下,DateTime有一个默认值,因为它是一个值类型。@ken2k您完全正确。谢谢更新了我的答案和你的建议。啊@SonerGönül这真的很简单,不知道我怎么会错过。谢谢你的纠正。我不明白反对票,到处都是巨魔,但在交易的时候
对于区域性,我从不隐式转换,尤其是从web浏览器接收值时。如果您谈论的是web服务器,则情况并非如此。具有不同区域性设置的不同服务器返回不同的值。这也会影响十进制值,因为我不理解向下投票,到处都是巨魔,但在处理区域性时,我从不隐式转换,尤其是在从web浏览器接收值时。如果你说的是web服务器,情况并非如此。具有不同区域性设置的不同服务器返回不同的值。它还影响十进制值