Thay vào đó, hãy phân tích cú pháp thành một số DateTimeOffset
, với điều kiện bạn đã nhận được khoản bồi hoàn. Từ số documentation of the zz
specifier mà bạn đang sử dụng:
Với giá trị ngày giờ, định dạng tùy chỉnh định dạng "zz" thể hiện chênh lệch đã ký của múi giờ của hệ điều hành địa phương từ UTC, được đo bằng giờ. Nó không phản ánh giá trị của thuộc tính DateTimeKind của một cá thể. Vì lý do này, trình định dạng định dạng "zz" không được khuyến khích sử dụng với các giá trị DateTime.
Vì vậy, bạn muốn kết thúc với:
DateTimeOffset result;
bool success = DateTimeOffset.TryParseExact
(text, "ddd MMM dd HH:mm:ss 'GMT'zzz yyyy",
CultureInfo.InvariantCulture, DateTimeStyles.None, out result);
Từ đó, bạn có thể lấy DateTime
phần, mà sẽ là nửa đêm ngày 11 tháng 9.
Nếu bạn muốn chỉ một ngày, bạn có thể sử dụng dự án Noda Time của tôi để tạo ra một LocalDate
:
LocalDate = OffsetDateTime.FromDateTimeOffset(result).LocalDateTime.Date;
(Tôi rất muốn đề nghị phân tích trực tiếp đến OffsetDateTime
, nhưng chúng tôi vẫn chưa nhận được sự ủng hộ Chúng tôi hy vọng sẽ đưa nó vào phiên bản 1.2.)
Nguồn
2013-02-08 14:07:11
Vấn đề là tôi nhận được '10.09.2011' (sai) thay vì '11.09.2011' (chính xác). I E. Tôi cần một gợi ý về cách sửa đổi mã như vậy mà 'kết quả 'bằng' 11.09.2011 ...' (ở đâu ... là thời gian, điều đó không liên quan đến tôi). –