2016-12-02 95 views
-2

目前我有很難找到如何解決我的問題涉及到DateTime.TryPase功能DateTime.TryParse()發行日期德國轉換爲美國日期

 String formattedDateString = String.Empty; 

     // German date dd.mm.yyyy 
     string dateString = "14.03.2016"; 
     DateTimeFormatInfo dateTimeFormat = null; 

     //automatically throws and exception if the locale is not in the correct format 
     CultureInfo fromCulture = new CultureInfo("en-US"); 
     DateTime tryParseDateTime; 


     //automatically throws and exception if the locale is not in the correct format 
     CultureInfo toCulture = new CultureInfo("de-de"); 
     dateTimeFormat = toCulture.DateTimeFormat; 

     // expecting result to fail 
     if (DateTime.TryParse(dateString, fromCulture, DateTimeStyles.None, out tryParseDateTime)) 
     { 
      formattedDateString = tryParseDateTime.ToString("d", dateTimeFormat); 
      Console.WriteLine("success"); 
     } 
     else 
     { 
      Console.WriteLine("Failed"); 
     } 

所以在這裏我的代碼,我發送德文格式日期,即dd.mm.yyyy和期待DateTime.TryParse失敗,但由於日期低於12,它假定有月份並返回成功聲明。

如果我通過德國日期「15.03.2016」這工作正常。

我該如何解決我的問題。

這裏所要求的語言環境爲德

感謝

+2

悉心爲你傳遞美國文化從轉換一開始,我以爲這應該是'去DE'? – DavidG

+0

由於OP的錯誤,投票結束。 – t0mm13b

+1

嘗試[DateTime.ParseExact](https://msdn.microsoft.com/en-us/library/w2sa9yss(v = vs.110).aspx) –

回答

1

注:提問者預計轉換失敗與給定的格式德國輸入字符串。他只希望在輸入字符串不是德文格式而是美式格式時轉換成功。


使用DateTime.TryParseExact並從您的源文化傳遞預期的格式。

// German date dd.mm.yyyy 
    string dateString = "01.03.2016"; 

    CultureInfo fromCulture = new CultureInfo("en-US"); 
    DateTime tryParseDateTime; 

    // expecting result to fail 
    if (DateTime.TryParseExact(dateString, fromCulture.DateTimeFormat.ShortDatePattern, fromCulture, DateTimeStyles.None, out tryParseDateTime)) 
    { 
     MessageBox.Show("Success"); 
    } 
    else 
    { 
     MessageBox.Show("Failed"); 
    } 
+0

這工作正常,當我們通過日期時間模式時結果失敗 –

相關問題