2010-07-15 46 views
7

Có cách nào để có được những múi giờ từ callbacks nhậnLấy múi giờ trong android

void onLocationChanged(Location location) 

sử dụng thông tin thời gian có thể được lấy từ các tham số vị trí

long Time = location.getTime(); 

Hoặc nếu có là một cách khác, vui lòng cung cấp thông tin!

+0

Bạn nên xây dựng vấn đề của bạn, bởi vì rõ ràng là không có giải pháp rõ ràng. – Doomsday

Trả lời

3

Bạn có thể sử dụng dịch vụ web được cung cấp bởi các geonames.org. Cung cấp vĩ độ và kinh độ để nhận thông tin múi giờ.

http://ws.geonames.org/timezoneJSON?lat=47.01&lng=10.2:

{"time":"2010-07-24 18:35","countryName":"Austria","sunset":"2010-07-24 21:02","rawOffset":1,"dstOffset":2,"countryCode":"AT","gmtOffset":1,"lng":10.2,"sunrise":"2010-07-24 05:48","timezoneId":"Europe/Vienna","lat":47.01} 
+0

Điều đó có thể hiệu quả, nhưng tôi muốn thứ gì đó không phụ thuộc vào kết nối internet. Có lẽ triển khai cùng một thuật toán cho ứng dụng của tôi. – rantravee

+0

Điều đó là có thể, nhưng bạn sẽ cần phải phân phối cơ sở dữ liệu của các quốc gia, địa điểm và múi giờ với ứng dụng của bạn. Cũng lưu ý rằng thông tin tiết kiệm ánh sáng ban ngày có thể thay đổi trong vòng 2 tuần. – CrazyCoder

2

Bạn có thể sử dụng java.util.TimeZone để có được thông tin về múi giờ hiện tại bằng cách gọi TimeZone.getDefault(), như:

java.util.TimeZone tz = java.util.TimeZone.getDefault(); 
Toast.makeText(context, tz.getDisplayName(), Toast.LENGTH_LONG).show(); 
+1

Đúng nhưng điều này trả về múi giờ của điện thoại có thể không chính xác hoặc không chính xác do thực tế là người dùng đang di chuyển – rantravee

+1

Được rồi, tôi hiểu nhầm ý định của bạn sau đó. Kể từ khi thời gian vị trí luôn luôn là UTC Tôi không nghĩ rằng có một cơ chế tại chỗ để hỗ trợ này. Điều đó sẽ yêu cầu một số loại mã địa lý để ánh xạ múi giờ, tồn tại trong một số thiết bị GPS. Có lẽ một tính năng tương lai cho Android ... – Thorstenvv

+0

Tôi nghĩ Android sẽ tự động đề xuất thay đổi múi giờ mặc định khi chuyển vùng sang một quốc gia khác. –

0
TimeZone tz = TimeZone.getDefault(); 
System.out.println("TimeZone "+tz.getDisplayName(false, TimeZone.SHORT)+" Timezon id :: " + tz.getID()); 

Output

TimeZone GMT+09:30 Timezon id :: Australia/Darwin 
Các vấn đề liên quan