日期格式从荷兰语到英语

时间:2013-09-06 10:30:10

标签: c# .net c#-4.0

我有一个字符串格式的日期(即荷兰语),例如" 7 juli 2013"。我想用英文格式转换它。 " Convert.toDateTime(strValue)抛出异常,因为它只转换英文格式。我也试试这个

   string strValue =   "7 juli 2013";

   CultureInfo ci = new CultureInfo("en-US");
   strValue = strValue.ToString(ci);  

但这不起作用。转换它的方法是什么?

1 个答案:

答案 0 :(得分:8)

string strValue = "7 juli 2013";

// Convert to DateTime
CultureInfo dutch = new CultureInfo("nl-NL", false);
DateTime dt = DateTime.Parse(strValue, dutch);

// Convert the DateTime to a string
CultureInfo ci = new CultureInfo("en-US", false);
strValue = dt.ToString("d MMM yyyy", ci); 

您首先将字符串转换为DateTime,然后转换为ToString DateTime

而且,一般来说,Convert.ToDateTime仅使用英语是错误的。您使用的重载使用了PC的当前文化(因此在我的电脑上它使用意大利语),并且Convert.ToDateTime(string, IFormatProvider)重载接受CultureInfo

多语言......但请注意,这是错误的!你不能确定一个单词在不同的地方没有不同的含义!!!

// The languages you want to recognize
var languages = new[] { "nl-NL", "it-IT" }; 

DateTime dt = DateTime.MinValue;
bool success = false;

foreach (var lang in languages)
{
    if (DateTime.TryParse(strValue, new CultureInfo(lang, false), DateTimeStyles.AssumeLocal, out dt))
    {
        success = true;
        break;
    }
}

if (success)
{
    CultureInfo ci = new CultureInfo("en-US", false);
    strValue = dt.ToString("d MMM yyyy", ci);
}