2013-04-09 61 views
8

我完全難住這一個。據我所看到的文件和其他職位,我讀過,說這應該工作。我必須錯過一些愚蠢的東西,但我看不到它。DateTime.ParseExact FormatException字符串未被識別爲有效的日期時間

我得到一個FormatException消息「String未被識別爲有效的DateTime」。在下面的代碼行:

return DateTime.ParseExact(value, DateFormat, null, 
          DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal); 
  • value"11/04/2013"
  • DateFormat"dd/MM/yyyy"
  • 目前的文化是en-GB
  • 我試過的DateTimeStyles各種變種,但沒有效果。

我的原意是爲格式ddd, dd/MMM/yyyy但沒有工作,要麼(在該實例的值Tue, 30/Apr/2013

我還試圖通過傳遞new CultureInfo("en-GB")迫使文化爲en-GB而不是null

我也提取的代碼放到自己的控制檯應用程序,以查看是否有關於環境的不同(ASP.NET MVC 3)

using System; 
using System.Collections.Generic; 
using System.Globalization; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var DateFormat = "dd/MM/yyyy"; 
      var value = "30/04/2013"; 
      var culture = new CultureInfo("en-GB"); 
      var result = DateTime.ParseExact(value, DateFormat, culture, 
          DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal); 
      Console.WriteLine("\"{0}\" as \"{1}\" ==> {2}", value, DateFormat, result); 
      Console.ReadKey(); 
     } 
    } 
} 

而這仍然給我同樣的錯誤。

+2

控制檯應用程序適用於我。我的機器上的默認文化:「de-DE」 – 2013-04-09 11:09:26

+0

我的兩位同事說它也適用於他們。但我的機器不同。也許我的安裝已損壞。不知道如何 - 其他代碼工作正常。 – 2013-04-09 11:10:35

+2

你的機器上的'Thread.CurrentThread.CurrentCulture'和'Thread.CurrentThread.CurrentUICulture'值是什麼? – 2013-04-09 11:12:06

回答

7

這是否工作

string myDate = "30-12-1899 07:50:00:AM"; 
DateTime dt1 = DateTime.ParseExact(myDate, "dd-MM-yyyy hh:mm:ss:tt", 
              CultureInfo.InvariantCulture) 
+0

設置不變文化工作。不知道爲什麼,但它的工作。 – 2013-04-09 12:05:42

4
string myDate = "30-12-1899 07:50:00:AM"; 
DateTime dt1 = DateTime.ParseExact(myDate, "dd-MM-yyyy HH:mm:ss:tt", 
              CultureInfo.InvariantCulture); 

注意使用HH(24小時制),而不是HH(12小時制),並使用InvariantCulture的,因爲有些文化用比其他分隔符削減。

例如,如果文化是de-DE,則格式「dd/MM/yyyy」將預期時間段作爲分隔符(31.01.2011)。

相關問題