我知道这些问题在这里很重要。请完成一次
我有来自文本框的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,因为文本框日期也有效,再次部署后客户端日期时间格式将变得未知,因此,我想要一种通用的方法来解析任何有效的日期时间字符串,而不管区域设置如何。这可能吗?
答案 0 :(得分:5)
这应该有效:
var date = DateTime.ParseExact(str, "M/d/yyyy", CultureInfo.InvariantCulture);
如下所示:
答案 1 :(得分:0)
答案 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);