Tôi đã tự hỏi nếu tôi có thể nhận được một nơi nào đó mã mặc định cho danh sách lựa chọn múi giờ cho android phiên bản 2.3.3?Mặc định Android Danh sách múi giờ
Trả lời
String[] ids=TimeZone.getAvailableIDs();
for(int i=0;i<ids.length;i++)
{
System.out.println("Availalbe ids.................."+ids[i]);
TimeZone d= TimeZone.getTimeZone(ids[i]);
System.out.println("time zone."+d.getDisplayName());
System.out.println("savings."+d.getDSTSavings());
System.out.println("offset."+d.getRawOffset());
/////////////////////////////////////////////////////
if (!ids[i].matches(".*/.*")) {
continue;
}
String region = ids[i].replaceAll(".*/", "").replaceAll("_", " ");
int hours = Math.abs(d.getRawOffset())/3600000;
int minutes = Math.abs(d.getRawOffset()/60000) % 60;
String sign = d.getRawOffset() >= 0 ? "+" : "-";
String timeZonePretty = String.format("(UTC %s %02d:%02d) %s", sign, hours, minutes, region);
System.out.println(timeZonePretty);
//////////////////////////////////////////////////////////////////
}
ListView listitems=(ListView)findViewById(R.id.list);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,ids);
listitems.setAdapter(adapter);
}
Các tài liệu cho TimeZone. http://developer.android.com/reference/java/util/TimeZone.html
Để thiết lập múi giờ
Sau đây là mẫu mã cho thiết lập Time Zone của Mỹ theo
// First Create Object of Calendar Class
Calendar calendar = Calendar.getInstance();
// Now Set the Date using DateFormat Class
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss z");
// Finally Set the time zone using SimpleDateFormat Class's setTimeZone() Method
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
Thật không may, cài đặt Android mất rằng danh sách múi giờ từ một XML bao gồm trong ứng dụng Settings. Bạn có thể thấy điều này trong source code (dòng 161):
private List<HashMap> getZones() {
List<HashMap> myData = new ArrayList<HashMap>();
long date = Calendar.getInstance().getTimeInMillis();
try {
XmlResourceParser xrp = getResources().getXml(R.xml.timezones);
...
}
Các ứng dụng khác, chẳng hạn như Google Calendar, có mảng riêng của họ về giá trị. Nó có thể được kiểm tra bằng cách thực hiện reverse engineering các tài nguyên đó. Vì vậy, trừ khi bạn muốn duy trì danh sách của riêng bạn (xem xét đa ngôn ngữ ...), tôi khuyên bạn nên có danh sách giảm giá được cung cấp bởi java.util.TimeZone và chỉ hiển thị những múi giờ bạn muốn, như @ Raghunandan đã đề nghị bạn trong bình luận của câu trả lời.
Ok, tôi đã hiểu. Nhưng tôi muốn có ít mục nhập múi giờ hơn. Một cái gì đó như thế này - http://publib.boulder.ibm.com/tividd/td/TWS/SC32-1274-02/en_US/HTML/SRF_mst273.htm – user2086174
Có danh sách tất cả các tên múi giờ và so sánh với các tên múi giờ bạn nhận được từ vòng lặp. Lọc và hiển thị dữ liệu. – Raghunandan
bạn có thể chỉ cách thực hiện điều đó bằng mã không? – Jayesh