2012-10-26 24 views
5

Java: Timezone why different timezone give same value in millisecLịch getTimeInMillis() có phụ thuộc múi giờ không?

đề cập đến liên kết ở trên Tôi cho rằng getTimeInMillis() của lớp Lịch trả về số mili giây độc lập với múi giờ.

Nhưng sử dụng đoạn mã sau:

Calendar cal = Calendar.getInstance(); 
int dateInSeconds = (int)(cal.getTimeInMillis()/1000); 
Log.i("TIME IN SECONDS: ",""+dateInSeconds); 

cố gắng, lúc đầu, để thiết lập đồng hồ hệ thống của tôi đến 10:00 và GMT + 02: 00

sản xuất một số lượng nhất định. Nhưng đặt đồng hồ hệ thống thành 10:00 và GMT + 00: 00

số lượng đầu ra lớn hơn khoảng 7200 so với trường hợp trước, điều này sẽ thay đổi khoảng 2 giờ.

Tại sao?

Trả lời

9

Đối với việc thu thập số mili giây độc lập để múi giờ tôi thấy các giải pháp sau đây

Thay vì:

int dateInSeconds = (int)(cal.getTimeInMillis()/1000); 

tôi sử dụng:

int dateInSeconds = (int)((cal.getTimeInMillis()+cal.getTimeZone().getOffset(cal.getTimeInMillis()))/1000); 

nó hoạt động tốt đối với tôi.

6

Bạn đang hiểu sai. getTimeInMillis()sẽ cho bạn thời gian độc lập với múi giờ. Nếu bạn thay đổi múi giờ trên đồng hồ máy tính, nhưng vẫn giữ nguyên thời gian hiển thị, bạn thực sự thay đổi thời gian độc lập với múi giờ. Do đó, bạn nên không phải sử dụng mã bạn đã cung cấp, cũng như không ai nên đọc điều này.

+0

Lịch getTimeInMillis() kết quả phụ thuộc vào Lịch.ZONE_OFFSET ... – marcolopes

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