将DateTime从文化A转换为文化B.

时间:2016-06-22 16:57:48

标签: c# datetime cultureinfo

我需要在随机文化之间转换DateTime变量,这些变量将从配置文件中读取。

以下代码有效,但我不知道为什么,而且我不确定我是否相信所有情况,因为DateTime.Parse没有指定参数convertedDt变量的格式是什么。

void ATestConversion(DateTime testDate) 
{
    CultureInfo ci = CultureInfo.CreateSpecificCulture("de-DE"); // assume de-DE read from config

    string convertedDt = testDate.ToString(ci);

    // How does this work without knowing convertedDt culture?
    DateTime myDate = DateTime.Parse(convertedDt, CultureInfo.CreateSpecificCulture("fr-FR")); // fr-FR read from config
}

但是,每当我尝试下面的代码时,我希望工作,我得到:字符串无法识别为有效的DateTime

myDate = DateTime.ParseExact(convertedDt, ci.DateTimeFormat.FullDateTimePattern, new CultureInfo("fr-FR"));

在这段代码中,我可以提供入站字符串所在的动态格式,以及需要转换为的CultureInfo。

我看到很多这样的例子:

DateTime.ParseExact(myDate, "dd/MMM/yyyy HH:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture); 

格式是硬编码的。我基本上试图用动态格式做同样的事情。为什么我的代码在指定文化A的FullDateTimePattern和文化B的实际CultureInfo时不起作用?

如何保证两个运行时指定的文化之间的转换是正确的?

0 个答案:

没有答案