2013-02-28 40 views
39

Giả sử có hai ngày A (thời gian bắt đầu) & B (thời gian kết thúc). A & B có thể là thời gian trong cùng một ngày hoặc thậm chí ngày khác. Nhiệm vụ của tôi là hiển thị sự khác biệt trong vài giây. Định dạng ngày mà tôi đang sử dụng làsự khác biệt trong vài giây giữa hai ngày sử dụng thời gian joda?

Date Format :: "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 

Ví dụ:

start date :: "2011-11-16T14:09:23.000+00:00" 
end date ::  "2011-11-17T05:09:23.000+00:00"    

Trợ giúp được đánh giá cao.

Trả lời

102

Sử dụng các lớp Seconds:

DateTime now = DateTime.now(); 
DateTime dateTime = now.plusMinutes(10); 
Seconds seconds = Seconds.secondsBetween(now, dateTime); 
System.out.println(seconds.getSeconds()); 

này mảnh in mã ra 600. Tôi nghĩ rằng đây là những gì bạn cần.

Để được tư vấn thêm, hãy khám phá tài liệu của joda-time. Nó khá tốt, và hầu hết mọi thứ đều rất dễ khám phá.

Trong trường hợp bạn cần một số giúp đỡ với các phân tích của ngày (Đó là trong các tài liệu, thực sự), hãy kiểm tra các câu hỏi có liên quan, như thế này:

Parsing date with Joda with time zone

+0

thanx pcalcao .. nó làm việc !! :-) –

+10

Nếu bạn đang tìm kiếm sự khác biệt (như số dương), hãy đảm bảo lấy giá trị tuyệt đối của 'secondsBetween', nếu không, bạn có thể nhận được số âm nếu đối số được đảo ngược (ví dụ: nếu bạn gọi 'Giây' .secondsBetween (dateTime, now) '. – user1366367

4

Câu trả lời của @pcalcao sẽ là tốt nhất trong hầu hết các trường hợp. Lưu ý rằng số giây sẽ được làm tròn thành số nguyên.

Nếu bạn quan tâm đến tiểu giây chính xác chỉ trừ các mili giây:

double seconds = (now.getMillis() - dateTime.getMillis())/1000d; 
Các vấn đề liên quan