我使用Parse
方法将string
转换为DateTime
对象:
requestRecord.TerminationDate = DateTime.Parse(reader.ReadString("Termination_Date"));
此代码在一台计算机上运行,但在另一台计算机上抛出异常。我认为问题可能与当地文化有关。查看两台计算机上的任务栏,抛出异常的任务栏的日期为01/12/2014
,而另一台显示12/01/2014
。
有没有什么方法可以重写上面的代码,以便它可以在两台机器上运行,而不管本地DateTime
文化?
答案 0 :(得分:8)
我猜两种机器的文化设置都不同。尝试提供格式。这就解释了为什么日期格式在两台机器上的解释都不同:
requestRecord.TerminationDate = DateTime.ParseExact
( reader.ReadString("Termination_Date")
, "dd/MM/yyyy"
, CultureInfo.InvariantCulture
);
这样,您不依赖于机器及其设置,而是依赖于您所知的格式。
根据reader
的内容,您可能希望使用reader.GetDateTime
,它已经为您完成了所有这些工作,例如SqlDataReader.GetDateTime
。