Tôi có hai dấu thời gian mô tả cùng một khoảng thời gian trong hai định dạng khác nhau.Ngày phân tích cú pháp với Joda với múi giờ
2010-10-03 18:58:07
và 2010-10-03T16:58:07.000+02:00
.
Tôi phân tích cú pháp dấu thời gian với hai trình định dạng ngày khác nhau với Joda. Cuối cùng tôi muốn có hai đối tượng DateTime bằng nhau về mặt tức thời.
DateFormatter cung cấp một số phương pháp để kiểm soát múi giờ và miền địa phương nhưng tôi không thể làm cho nó hoạt động.
Đây là mã mà tôi muốn làm việc:
final String date1 = "2010-10-03 18:58:07"; // Europe/Berlin local time
final DateTimeFormatter formatter1 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
final DateTime dateTime1 = formatter1.parseDateTime(date1);
final String date2 = "2010-10-03T16:58:07.000+02:00"; // Europe/Berlin local time with time zone
final DateTimeFormatter formatter2 = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
final DateTime dateTime2 = formatter2.parseDateTime(date2);
Assert.assertTrue(dateTime1.isEqual(dateTime2));
Cảm ơn trước nếu ai đó có thể giúp tôi!
Bạn có loại trong "2010-10-03T16: 58: 07.000 + 02: 00 có nghĩa là không phải lúc 16:58:07 trong múi giờ có chênh lệch +2 giờ từ GMT)". Nó phải đọc: "2010-10-03T16: 58: 07.000 + 02: 00 có nghĩa là nó là 16:58:07 trong một múi giờ với một +2 giờ bù đắp từ UTC)" – MicSim
Vâng, tôi mong đợi nó sẽ là 16 : 58: 07 GMT. Sau đó, có vẻ như các dấu thời gian chỉ bị hỏng. Đây là các dấu thời gian từ hai tệp nhật ký khác nhau của các máy chủ khác nhau. Và tôi chắc rằng họ chỉ định cùng một sự kiện. Vì vậy, đây là sự nhầm lẫn của tôi đến từ. – wilfried
@MacSim: Chắc chắn, tôi đã viết một chút quá nhanh ở đó. – jarnbjo