2011-01-13 57 views
8

chuỗi đầu vào của tôi là một thời gian PM:Tại sao thời gian Joda thay đổi PM trong chuỗi đầu vào thành AM?

log(start); 
    // Sunday, January 09, 2011 6:30:00 PM 

Tôi đang sử dụng Joda Time's pattern syntax như sau để phân tích DateTime:

DateTimeFormatter parser1 = 
    DateTimeFormat.forPattern("EEEE, MMMM dd, yyyy H:mm:ss aa"); 
    DateTime startTime = parser1.parseDateTime(start); 

Vì vậy, tại sao lại là đầu ra của tôi chuỗi AM?

log(parser1.print(startTime)); 
    // Sunday, January 09, 2011 6:30:00 AM 

Trả lời

25

Chuỗi phân tích cú pháp của bạn chứa "H" để cho trình phân tích cú pháp hiểu giá trị là giờ 24 giờ trong ngày (0,23). Vì vậy, 6 được hiểu là giờ thứ 6 trong ngày. Vào buổi sáng. AM được in là vì ngày phân tích tổng thể được coi là vào buổi sáng.

Nếu bạn muốn sử dụng thời gian 12 giờ, thay đổi chuỗi định dạng của bạn để:

"EEEE, MMMM dd, yyyy h:mm:ss aa". 

'h' sẽ được hiểu là một giờ 12 giờ trong ngày (1..12)

+0

Cảm ơn. Điều đó đã làm điều đó. – Tree

2

H sẽ cung cấp cho bạn một giá trị 0-23 mỗi ngày, vì vậy có lẽ nó đọc ra rằng, nhìn thấy 6, và xác định rằng nó phải là AM?

Thử sử dụng chữ thường h để nhận giờ đồng hồ trong ngày.

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