Tôi muốn đạt được trò chuyện của this, nghĩa là, tôi muốn chuyển đổi một string
với định dạng hh:mm tt
thành TimeSpan
với số giây không bằng 0. Ví dụ, 09:45 pm
được chuyển đổi thành 21:45:00
.AM/PM để TimeSpan
Trả lời
Cách tiếp cận đơn giản nhất có thể là phân tích cú pháp dưới dạng DateTime
sử dụng DateTime.ParseExact
và sau đó sử dụng TimeOfDay
để chính xác số TimeSpan
.
DateTime dateTime = DateTime.ParseExact(text,
"hh:mm tt", CultureInfo.InvariantCulture);
TimeSpan span = dateTime.TimeOfDay;
Đó là lẻ để xem 0 hàng đầu về một số giờ khi bạn đang cũng chỉ định một sáng/chiều vấn thiết kế mặc dù. Bạn có thể muốn "h" thay vì "hh" trong chuỗi định dạng, để cho phép "9:45 chiều" thay vì "09:45 chiều".
(Tôi cũng cho rằng đó là việc sử dụng lạ TimeSpan
ở vị trí đầu tiên, nhưng sau đó các loại ngày/thời gian .NET có phần rối tung trong quan điểm của tôi. Tôi khuyên bạn nên sử dụng Noda Time, nhưng tôi biased :)
TimeSpan tspan;
tspan = DateTime.ParseExact("01:45 PM", "hh:mm tt", CultureInfo.InvariantCulture).TimeOfDay;
Câu trả lời chính xác đã được cung cấp http://stackoverflow.com/a/17553758/3893182 – danopz
Tác phẩm này dành cho tôi.
TimeSpan ts= DateTime.Parse("8:00 PM").TimeOfDay;
Làm việc tốt cho tôi, cảm ơn. – amnippon
Một 'TimeSpan' không có định dạng. –