2012-05-15 39 views
12
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); 
java.util.Date fromDate = cal.getTime(); 
System.out.println(fromDate); 

Mã trên không in ngày bằng GMT, mà là in theo múi giờ địa phương. Làm thế nào để có được một giờ GMT ngày tương đương từ ngày hiện tại (giả định rằng chương trình có thể chạy ở Nhật Bản hoặc SFO)Cách chuyển đổi ngày địa phương thành GMT

Trả lời

20

Làm thế nào về điều này -

public static void main(String[] args) throws IOException { 
    Test test=new Test(); 
    Date fromDate = Calendar.getInstance().getTime(); 
    System.out.println("UTC Time - "+fromDate); 
    System.out.println("GMT Time - "+test.cvtToGmt(fromDate)); 
} 
private Date cvtToGmt(Date date){ 
    TimeZone tz = TimeZone.getDefault(); 
    Date ret = new Date(date.getTime() - tz.getRawOffset()); 

    // if we are now in DST, back off by the delta. Note that we are checking the GMT date, this is the KEY. 
    if (tz.inDaylightTime(ret)){ 
     Date dstDate = new Date(ret.getTime() - tz.getDSTSavings()); 

     // check to make sure we have not crossed back into standard time 
     // this happens when we are on the cusp of DST (7pm the day before the change for PDT) 
     if (tz.inDaylightTime(dstDate)){ 
      ret = dstDate; 
     } 
    } 
    return ret; 
} 

Kết quả thử nghiệm:
UTC Time - Thứ ba ngày 15 tháng 5 16:24:14 IST 2012
giờ Time - Thứ ba ngày 15 tháng 5 10:54:14 IST 2012

+0

Cảm ơn bạn rất nhiều. Nó giúp tôi –

+0

bạn chào đón @HaiderAli :) –

15
DateFormat gmtFormat = new SimpleDateFormat(); 
TimeZone gmtTime = TimeZone.getTimeZone("GMT"); 
gmtFormat.setTimeZone(gmtTime); 
System.out.println("Current DateTime in GMT : " + gmtFormat.format(new Date())); 

Tổng quát hơn, bạn có thể chuyển đổi sang bất kỳ múi giờ (hợp lệ) theo cách này


Xem

+1

gmtFormat.format (new Date()) kiểu trả về là String.but tôi muốn cập nhật. –

+1

Bạn có thể 'phân tích cú pháp()' mà Chuỗi để tạo Ví dụ ngày –

+0

Ngay khi bạn phân tích cú pháp, nó sẽ trở lại định dạng múi giờ địa phương của bạn. Trong trường hợp của tôi, nó chuyển đổi nó trở lại IST. Làm thế nào để giữ nó trong GMT – user2531799

1

Như thế này SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss"); dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));?

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