异步过程中的DateTime转换

时间:2015-02-13 12:31:02

标签: c# asp.net datetime asynchronous

我在C#中将进程设置为异步。当我尝试将字符串(" 12/02 / 2015")转换为datetime类型时,它显示名为String的错误,其转换格式不正确。但是,在进行异步处理之前,相同的代码仍然有效。

DateTime.Parse("12/02/2015 00:00:00")

1 个答案:

答案 0 :(得分:3)

启动新线程时,默认情况下,其区域设置将设置为操作系统的默认区域设置。它 not 必须设置为Windows区域设置中选择的文化。

您可以通过在线程函数的开头添加以下代码行来解决此问题:

System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture;

或者,您可以使用DateTime.ParseExact()并指定要解析的格式,例如:

DateTime.ParseExact("12/02/2015 00:00:00", "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);

请注意,格式字符串中的“/”和“:”字符不是逐字符;它们分别指定日期和时间分隔符。它们碰巧映射到不变文化中的相同角色,但它们可能映射到其他文化中的不同角色。

要指定应该使用那些“/”和“:”字符,你必须像这样转义它们:

DateTime.ParseExact("12/02/2015 00:00:00", "dd\\/MM\\/yyyy HH\\:mm\\:ss", CultureInfo.InvariantCulture);