2013-04-09 27 views
8

hợp lệ Tôi hoàn toàn bối rối về vấn đề này. Theo như tôi có thể xem tài liệu và các bài viết khác trên SO tôi đã đọc nói điều này sẽ làm việc. Tôi phải thiếu cái gì đó ngớ ngẩn, nhưng tôi không thể nhìn thấy nó.Chuỗi thời gian DateTime.ParseExact FormatException không được nhận dạng là DateTime

Tôi nhận được Định dạng ngoại lệ với thông báo "Chuỗi không được nhận dạng là Ngày giờ hợp lệ". trên dòng mã sau đây:

return DateTime.ParseExact(value, DateFormat, null, 
          DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal); 
  • value"11/04/2013"
  • DateFormat"dd/MM/yyyy"
  • Văn hóa hiện nay là en-GB
  • Tôi đã thử các biến thể khác nhau của DateTimeStyles nhưng để có hiệu lực.

ý định ban đầu của tôi là cho các định dạng ddd, dd/MMM/yyyy nhưng điều đó không làm việc, hoặc (giá trị trong trường hợp đó là Tue, 30/Apr/2013)

Tôi cũng đã cố gắng buộc các nền văn hóa để en-GB bằng cách đi qua trong new CultureInfo("en-GB") thay vì null

tôi cũng trích mã vào ứng dụng giao diện điều khiển riêng của mình để xem nếu có là khác nhau về môi trường (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(); 
     } 
    } 
} 

Và điều đó vẫn mang lại cho tôi cùng một lỗi.

+2

Ứng dụng bảng điều khiển hoạt động cho tôi. Văn hóa mặc định trên máy của tôi: "de-DE" –

+0

Hai trong số các đồng nghiệp của tôi nói rằng nó hoạt động cho họ. Nhưng máy của tôi cầu xin khác biệt. Có lẽ cài đặt của tôi bị hỏng. Bạn không chắc chắn cách thức - mã khác hoạt động tốt. –

+2

Giá trị của 'Thread.CurrentThread.CurrentCulture' và' Thread.CurrentThread.CurrentUICulture' trên máy của bạn là gì? –

Trả lời

7

Liệu công việc này

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

Đặt Văn bản bất biến hoạt động. Không biết tại sao, nhưng nó hoạt động. –

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

Lưu ý việc sử dụng HH (24 giờ đồng hồ) chứ không phải là hh (12 giờ đồng hồ), và việc sử dụng InvariantCulture bởi vì một số nền văn hóa sử dụng dải phân cách khác hơn gạch chéo.

Ví dụ: nếu văn bản là de-DE, định dạng "dd/MM/yyyy" sẽ là khoảng thời gian làm dấu phân tách (31.01.2011).

Các vấn đề liên quan