无法在C#中解析日期时间

时间:2012-10-24 11:31:23

标签: c# asp.net visual-studio-2010 datetime

我知道这些问题在这里很重要。请完成一次

我有来自文本框的string具有当前日期,例如10/9/2012,我的类属性为DateTime?类型。我正在使用Convert.ToDateTime(datetime_string_from_textbox),但它给了我一个FormatException。然后我按照Jon Skeet here的建议尝试DateTime.ParseExact(string, format, CultureInfo, DateTimeStyle),但它仍然给了我同样的例外。

还有一件事 - 我的本地机器日期时间格式为dd-mm-yyyy。当我将其切换为mm/dd/yyyy格式时,代码工作正常。基本上,我想知道如何将有效的日期时间字符串解析为DateTime对象,而不管区域设置,任何设置或对本地计算机的任何依赖性。

这可能吗?

更新:正在使用的代码

employee.JoiningDate = DateTime.ParseExact(string.Format("{0} 00:00:00", JoiningDate.Text.Trim()), "MM/dd/yyyy hh:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal); 

现有问题和所需解决方案

我的系统日期时间显示为24-10-2012(即10月24日),我的文本框(即10月17日)中有10/17/2012,因为文本框日期也有效,再次部署后客户端日期时间格式将变得未知,因此,我想要一种通用的方法来解析任何有效的日期时间字符串,而不管区域设置如何。这可能吗?

4 个答案:

答案 0 :(得分:5)

这应该有效:

var date = DateTime.ParseExact(str, "M/d/yyyy", CultureInfo.InvariantCulture);

如下所示:

enter image description here

答案 1 :(得分:0)

尝试使用以下方法将日期格式设置为国际日期格式:

How would you format DateTime in international format?

您也可以查看当前的文化:

Set Default DateTime Format c#

答案 2 :(得分:0)

完全取决于机器设置。 DateTime.ParseExact(str, "dd/MM/yyyy", CultureInfo.InvariantCulture);将适用于英国格式,但它会以美国格式提供格式例外。因此请根据您的机器设置使用格式。

答案 3 :(得分:0)

如果有效,请尝试以下操作

var formatInfo = new DateTimeFormatInfo();
formatInfo.ShortDatePattern = "MM/dd/yyyy";
DateTime.Parse(date, formatInfo);