2012-02-28 125 views
45

Làm cách nào để có múi giờ hiện tại trong ứng dụng Android của tôi? Tôi đã cố gắng sử dụng số điện thoại nàyLấy múi giờ hiện tại trong ứng dụng android

Calendar cal = Calendar.getInstance(userConfig.locale); 
TimeZone tz = cal.getTimeZone(); 

Nhưng tôi không nhận được múi giờ từ nó. Làm thế nào tôi có thể hiển thị múi giờ?

+1

Nếu bạn sử dụng 'JodaTime', bạn có thể sử dụng' DateTime.now (DateTimeZone.getDefault()); '. Nếu bạn không sử dụng 'JodaTime', bạn nên kiểm tra nó. –

Trả lời

88

Sử dụng này

Calendar cal = Calendar.getInstance(); 
TimeZone tz = cal.getTimeZone(); 
Log.d("Time zone","="+tz.getDisplayName()); 

hoặc bạn cũng có thể sử dụng lớp java.util.TimeZone

TimeZone.getDefault().getDisplayName() 
+22

+1 để sử dụng TimeZone.getDefault() thay vì khởi tạo Lịch chỉ để nhận múi giờ. – spaaarky21

+0

'TimeZone.getDefault(). GetDisplayName()' hoạt động tốt. –

22
String timezoneID = TimeZone.getDefault().getID(); 
System.out.println(timezoneID); 

Trong Bảng điều khiển của tôi, nó in Asia/Calcutta

Và bất kỳ định dạng ngày, tôi đặt nó Giống như ....

SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MMM-yyyy"); 
sdf2.setTimeZone(TimeZone.getTimeZone(timezoneID)); 
-5

Để hiển thị thời gian hiện tại, bạn nên chạy đoạn mã dưới đây trên chuỗi giao diện người dùng. Điều này làm việc cho tôi:

Timer timer = new Timer();   
timer.schedule(new TimerTask() {   
    public void run() {  
     runOnUiThread(new Runnable(){  
      public void run() {  
       dateTxt.setText(new Date().toString());  
      }  
     });  
    }  
}, 0, 1000); 
9

tôi cần sự bù đắp đó không chỉ bao gồm thời gian tiết kiệm ánh sáng ngày nhưng như một số. Đây là mã mà tôi đã sử dụng trong trường hợp ai đó đang tìm kiếm một ví dụ.

Tôi nhận được câu trả lời "11" là điều tôi mong đợi ở NSW, Úc vào mùa hè. Tôi cũng cần nó như một chuỗi để tôi có thể đăng nó lên một máy chủ để bạn có thể không cần dòng cuối cùng.

TimeZone tz = TimeZone.getDefault(); 
Date now = new Date(); 
int offsetFromUtc = tz.getOffset(now.getTime())/3600000; 
String m2tTimeZoneIs = Integer.toString(offsetFromUtc); 
+0

Đây chính xác là những gì tôi đang tìm kiếm. 1 cho câu trả lời này – user2759156

+3

Điều này sẽ không hoạt động đối với các múi giờ nằm ​​dưới sự khác biệt nửa giờ như Newfoundland là GMT-2: 30, bạn sẽ chỉ nhận được 2 trở lại – pkramaric

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