2011-07-29 21 views
7

Sau khi khách hàng tải xuống tệp từ máy chủ của chúng tôi với ứng dụng của chúng tôi, ứng dụng thực hiện ParseExact trên chuỗi ngày xuống từ máy chủ ở dạng: yyyy/mm/dd HH:mm:ss.DateTime.ParseExact vấn đề với Thái Lan/Phật giáo Thời đại

Sau nhiều sự nhầm lẫn, tôi nhận thấy trong một số nhật ký rằng ngày trên hệ thống khách hàng là 19/7/2554. Vì hóa ra đây là thời điểm hợp lệ như ở Thái Lan, Windows mặc định theo hệ thống thời đại Phật giáo, nơi nó là năm 2554.

Chính xác phân tích cú pháp của tôi được thực hiện với một nền văn hóa bất biến, mà tôi nghi ngờ có thể là vấn đề , nhưng tôi nghĩ rằng nền văn hóa đã đề cập đến định dạng mà bạn đang cố phân tích?

Thông điệp ngoại lệ tôi nhận được là: String đã không được công nhận là một giá trị DateTime vì ngày nào trong tuần là không đúng

+0

Định dạng của bạn dường như không bao gồm ngày trong tuần. Bạn có thể đưa ra ví dụ về chuỗi bạn đang cố phân tích cú pháp và mã đang thực hiện phân tích cú pháp không? –

+0

Thật vậy, bạn có đang chỉ định danh sách định dạng không? – V4Vendetta

+0

Ah kẻ xấu của tôi, tôi hơi say. Hóa ra có một đoạn mã khác mà tôi thậm chí không biết. Rất khó để gỡ lỗi chỉ với một thông báo ngoại lệ từ một tệp nhật ký. Hóa ra đó là lỗi DateTime.Parse, không phải là một phân tích cú pháp. Tôi đã có thể tái tạo vấn đề bằng cách thay đổi khu vực máy tính của tôi sang Thái Lan và xem chính xác nơi nó đang chết. –

Trả lời

1

Các CultureInfo cũng chứa thông tin lịch. Nếu phương thức TryParseExact có quyền truy cập vào thông tin lịch chính xác thì nó sẽ có thể phân tích cú pháp ngày chính xác.

http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.calendar.aspx

Nếu bạn thay thế CultureInfo InvariantCulture với Thái CultureInfo sau đó lịch mặc định cho văn hóa sẽ được sử dụng.

Ngoài ra, bạn có thể sử dụng quá tải phương thức TryParse không yêu cầu CultureInfo. Văn hóa được sử dụng trong trường hợp này sẽ phụ thuộc vào cài đặt vùng của người dùng trong Windows.

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