2013-07-22 41 views
5

Tôi phải phân tích cú pháp DateTime đối tượng từ chuỗi có định dạng yyyyMMddhhmmss.Phân tích định dạng ngày giờ tùy chỉnh

Nếu tôi chạy mã này, nó hoạt động tốt:

DateTime y = new DateTime(2013, 07, 22, 15, 35, 23); 
string x = y.ToString("yyyyMMddhhmmss", CultureInfo.InvariantCulture); 

Nhưng nếu tôi chạy mã này - dường như hoạt động ngược lại - tôi nhận được một ngoại lệ:

string x = "20130722153523"; 
DateTime y = DateTime.ParseExact(x, "yyyyMMddhhmmss", CultureInfo.InvariantCulture); 

Trường hợp ngoại lệ là:

System.FormatException: String was not recognized as a valid DateTime. 

Tôi bị cho là có gì sai ở đây. Tôi đang làm gì sai?

Lưu ý: Đừng lo lắng về múi giờ. Tôi có thể đối phó với việc nhận được múi giờ chính xác sau đó.

+0

Trong lần đầu tiên mẫu mã x là 20130722033523, không 20130722153523 – empi

Trả lời

15

Vấn đề là định dạng ngày giờ bạn chỉ định sử dụng hh cho định dạng thời gian 12 giờ, nhưng chuỗi đầu vào có 15 trong khu vực đó. Nó không thể phân tích cú pháp này vì 15 nằm ngoài phạm vi dự kiến.

Hãy thử sử dụng HH cho một định dạng thời gian 24 giờ thay vì:

string x = "20130722153523"; 
DateTime y = DateTime.ParseExact(x, "yyyyMMddHHmmss", CultureInfo.InvariantCulture); 

Đọc thêm:

+3

Trực tiếp từ MSDN: Nếu định dạng là mẫu định dạng tùy chỉnh không bao gồm dấu phân cách ngày hoặc thời gian (chẳng hạn như "yyyyMMdd HHmm"), sử dụng văn bản bất biến cho thông số nhà cung cấp và biểu mẫu rộng nhất của mỗi định dạng tùy chỉnh định dạng. Ví dụ: nếu bạn muốn chỉ định giờ trong mẫu định dạng, hãy chỉ định biểu mẫu rộng hơn, "HH", thay vì biểu mẫu hẹp hơn, "H". –

+3

+1. Ngoài ra kiểm tra này: http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx - (trích dẫn) ** Ghi chú cho người gọi **: Trong .NET Framework 4, phương thức ParseExact ném ra một định dạng FormatException nếu chuỗi được phân tích cú pháp chứa thành phần giờ và trình thiết kế AM/PM không có trong thỏa thuận. Trong .NET Framework 3.5 và các phiên bản trước đó, trình thiết kế AM/PM bị bỏ qua. (/ Quote) – Renan

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