Tôi khá mới đối với Java và tôi hơi bị kẹt với việc sử dụng SimpleDateFormat
và Calendar
. Tôi có một Date-Object và muốn trích xuất một datestring GMT như yyyy-MM-dd HH:mm:ss
. Tôi sống ở Đức và hiện tại chúng tôi là GMT +0200. Thời gian Date-Object của tôi là ví dụ 2011-07-18 13:00:00
. Những gì tôi cần bây giờ là 2011-07-18 11:00:00
. Mức chênh lệch cho múi giờ của tôi sẽ được tính toán tự động.Chuyển đổi GMT DateTime Chuỗi
tôi đã cố gắng một cái gì đó như thế này, nhưng tôi đoán có một lỗi ở đâu đó:
private String toGmtString(Date date){
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
TimeZone timeZone = TimeZone.getDefault();
Calendar cal = Calendar.getInstance(new SimpleTimeZone(timeZone.getOffset(date.getTime()), "GMT"));
sd.setCalendar(cal);
return sd.format(date);
}
Trên một số thiết bị các datestring được trả về như tôi muốn nó. Trên các thiết bị khác, bù trừ không được tính đúng và tôi nhận được ngày và giờ từ ngày-đối tượng đầu vào. Bạn có thể cho tôi một số lời khuyên hay lời khuyên không? Tôi đoán cách thoát khỏi múi giờ mặc định của tôi không hoạt động?
Tôi không thể tin rằng nó là dễ dàng, nhưng tất nhiên tôi sẽ cố gắng đó quá. Hãy cho tôi một vài phút xin vui lòng ... – Marco
Ok .. Thử nghiệm .. Tôi đã sử dụng một đối tượng ngày đại diện cho '2011-07-18 13: 34: 27'. Sử dụng hàm ngày mặc định '.toGMTString()' Tôi nhận được '18 Jul 2011 11:43:27 GMT' là thời điểm chính xác mà tôi cần. Sử dụng chức năng của riêng tôi, tôi vẫn nhận được' 2011-07-18 13: 43: 27' đó là vấn đề của tôi. Sử dụng chức năng của Jigar Joshin tôi nhận được '2011-07-18 12: 43: 27' mất tích 1 giờ (mùa hè châu Âu). Sử dụng chức năng Eli Acherkans tôi nhận được '2011-07-18 11: 43: 27' chính xác là những gì tôi muốn (Bù đắp bao gồm cả mùa hè châu Âu). – Marco
+1 –