编写Android网络程序时难免会遇到手机时间不准确的问题,本文总结了一些常用的时间获取与校正方法:
转载请注明:http://blog.csdn.net/xzy2046
1.获取本机当前时间:
Time local = new Time(); local.set(System.currentTimeMillis()); mLocalTime.setText(local.format2445());
2.获取本机时间对应的上海时间:
Time shanghai = new Time("Asia/Shanghai"); shanghai.set(System.currentTimeMillis()); mShangHaiTime.setText(shanghai.format2445());
各位可能想了解类似Asia/Shanghai从哪边可以查到,本文最后将附上查找表。
3.获取本机时间对应的东京时间
Time tokyo = new Time("Asia/Tokyo"); tokyo.set(System.currentTimeMillis()); mTokyoTime.setText(tokyo.format2445());
4.获取网络时间:
URL url = null; try { url = new URL("http://www.baidu.com"); } catch (MalformedURLException e) { e.printStackTrace(); } URLConnection uc = null; try { uc = url.openConnection(); uc.connect(); } catch (IOException e) { e.printStackTrace(); } long ld = uc.getDate(); Date date = new Date(ld); Log.i("xzy", "Net Time is : " + date.getHours() + "时" + date.getMinutes() + "分" + date.getSeconds() + "秒");
注意网络相关方法需要做异步处理,不能直接在UI线程中获取。本文最后将提供一个Demo,在AsyncTaskLoader中进行网络请求。
5.通过Gps获取当前时间:
LocationManager locMan = (LocationManager) this.getSystemService(LOCATION_SERVICE); locMan.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() { @Override public void onLocationChanged(Location location) { long time = location.getTime(); Date date = new Date(time); mGpsTime.setText(date.toString()); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } });
6.计算手机当前时区和北京时区的差值:
Date date = new Date(); long timezoneDiff = TimeZone.getDefault().getOffset(date.getTime()) - TimeZone.getTimeZone("GMT+8").getOffset(date.getTime());
通过这个差值和之前我们获取网络时间,可以计算出本机时间和网络时间的差值。对时间进行转换,解决一系列的时间错误问题。
7.附国家缩写和时区名称对照表:
//主要城市,国家对应表 String[] world = new String[]{ "ad", "Europe/Andorra", "ae", "Asia/Dubai", "af", "Asia/Kabul", "ag", "America/Antigua", "ai", "America/Anguilla", "al", "Europe/Tirane", "am", "Asia/Yerevan", "an", "America/Curacao", "ao", "Africa/Luanda", "aq", "Antarctica/McMurdo", "aq", "Antarctica/DumontDUrville", "aq", "Antarctica/Casey", "aq", "Antarctica/Davis", "aq", "Antarctica/Mawson", "aq", "Antarctica/Syowa", "aq", "Antarctica/Rothera", "aq", "Antarctica/Palmer", "ar", "America/Argentina/Buenos_Aires", "as", "Pacific/Pago_Pago", "at", "Europe/Vienna", "au", "Australia/Sydney", "au", "Australia/Adelaide", "au", "Australia/Perth", "au", "Australia/Eucla", "aw", "America/Aruba", "ax", "Europe/Mariehamn", "az", "Asia/Baku", "ba", "Europe/Sarajevo", "bb", "America/Barbados", "bd", "Asia/Dhaka", "be", "Europe/Brussels", "bf", "Africa/Ouagadougou", "bg", "Europe/Sofia", "bh", "Asia/Bahrain", "bi", "Africa/Bujumbura", "bj", "Africa/Porto-Novo", "bm", "Atlantic/Bermuda", "bn", "Asia/Brunei", "bo", "America/La_Paz", "br", "America/Noronha", "br", "America/Sao_Paulo", "br", "America/Manaus", "bs", "America/Nassau", "bt", "Asia/Thimphu", "bw", "Africa/Gaborone", "by", "Europe/Minsk", "bz", "America/Belize", "ca", "America/St_Johns", "ca", "America/Halifax", "ca", "America/Toronto", "ca", "America/Winnipeg", "ca", "America/Edmonton", "ca", "America/Vancouver", "cc", "Indian/Cocos", "cd", "Africa/Lubumbashi", "cd", "Africa/Kinshasa", "cf", "Africa/Bangui", "cg", "Africa/Brazzaville", "ch", "Europe/Zurich", "ci", "Africa/Abidjan", "ck", "Pacific/Rarotonga", "cl", "America/Santiago", "cl", "Pacific/Easter", "cm", "Africa/Douala", "cn", "Asia/Shanghai", "co", "America/Bogota", "cr", "America/Costa_Rica", "cu", "America/Havana", "cv", "Atlantic/Cape_Verde", "cx", "Indian/Christmas", "cy", "Asia/Nicosia", "cz", "Europe/Prague", "de", "Europe/Berlin", "dj", "Africa/Djibouti", "dk", "Europe/Copenhagen", "dm", "America/Dominica", "do", "America/Santo_Domingo", "dz", "Africa/Algiers", "ec", "America/Guayaquil", "ec", "Pacific/Galapagos", "ee", "Europe/Tallinn", "eg", "Africa/Cairo", "eh", "Africa/El_Aaiun", "er", "Africa/Asmara", "es", "Europe/Madrid", "es", "Atlantic/Canary", "et", "Africa/Addis_Ababa", "fi", "Europe/Helsinki", "fj", "Pacific/Fiji", "fk", "Atlantic/Stanley", "fm", "Pacific/Ponape", "fm", "Pacific/Truk", "fo", "Atlantic/Faroe", "fr", "Europe/Paris", "ga", "Africa/Libreville", "gb", "Europe/London", "gd", "America/Grenada", "ge", "Asia/Tbilisi", "gf", "America/Cayenne", "gg", "Europe/Guernsey", "gh", "Africa/Accra", "gi", "Europe/Gibraltar", "gl", "America/Danmarkshavn", "gl", "America/Scoresbysund", "gl", "America/Godthab", "gl", "America/Thule", "gm", "Africa/Banjul", "gn", "Africa/Conakry", "gp", "America/Guadeloupe", "gq", "Africa/Malabo", "gr", "Europe/Athens", "gs", "Atlantic/South_Georgia", "gt", "America/Guatemala", "gu", "Pacific/Guam", "gw", "Africa/Bissau", "gy", "America/Guyana", "hk", "Asia/Hong_Kong", "hn", "America/Tegucigalpa", "hr", "Europe/Zagreb", "ht", "America/Port-au-Prince", "hu", "Europe/Budapest", "id", "Asia/Jayapura", "id", "Asia/Makassar", "id", "Asia/Jakarta", "ie", "Europe/Dublin", "il", "Asia/Jerusalem", "im", "Europe/Isle_of_Man", "in", "Asia/Calcutta", "io", "Indian/Chagos", "iq", "Asia/Baghdad", "ir", "Asia/Tehran", "is", "Atlantic/Reykjavik", "it", "Europe/Rome", "je", "Europe/Jersey", "jm", "America/Jamaica", "jo", "Asia/Amman", "jp", "Asia/Tokyo", "ke", "Africa/Nairobi", "kg", "Asia/Bishkek", "kh", "Asia/Phnom_Penh", "ki", "Pacific/Kiritimati", "ki", "Pacific/Enderbury", "ki", "Pacific/Tarawa", "km", "Indian/Comoro", "kn", "America/St_Kitts", "kp", "Asia/Pyongyang", "kr", "Asia/Seoul", "kw", "Asia/Kuwait", "ky", "America/Cayman", "kz", "Asia/Almaty", "kz", "Asia/Aqtau", "la", "Asia/Vientiane", "lb", "Asia/Beirut", "lc", "America/St_Lucia", "li", "Europe/Vaduz", "lk", "Asia/Colombo", "lr", "Africa/Monrovia", "ls", "Africa/Maseru", "lt", "Europe/Vilnius", "lu", "Europe/Luxembourg", "lv", "Europe/Riga", "ly", "Africa/Tripoli", "ma", "Africa/Casablanca", "mc", "Europe/Monaco", "md", "Europe/Chisinau", "me", "Europe/Podgorica", "mg", "Indian/Antananarivo", "mh", "Pacific/Majuro", "mk", "Europe/Skopje", "ml", "Africa/Bamako", "mm", "Asia/Rangoon", "mn", "Asia/Choibalsan", "mn", "Asia/Hovd", "mo", "Asia/Macau", "mp", "Pacific/Saipan", "mq", "America/Martinique", "mr", "Africa/Nouakchott", "ms", "America/Montserrat", "mt", "Europe/Malta", "mu", "Indian/Mauritius", "mv", "Indian/Maldives", "mw", "Africa/Blantyre", "mx", "America/Mexico_City", "mx", "America/Chihuahua", "mx", "America/Tijuana", "my", "Asia/Kuala_Lumpur", "mz", "Africa/Maputo", "na", "Africa/Windhoek", "nc", "Pacific/Noumea", "ne", "Africa/Niamey", "nf", "Pacific/Norfolk", "ng", "Africa/Lagos", "ni", "America/Managua", "nl", "Europe/Amsterdam", "no", "Europe/Oslo", "np", "Asia/Katmandu", "nr", "Pacific/Nauru", "nu", "Pacific/Niue", "nz", "Pacific/Auckland", "nz", "Pacific/Chatham", "om", "Asia/Muscat", "pa", "America/Panama", "pe", "America/Lima", "pf", "Pacific/Gambier", "pf", "Pacific/Marquesas", "pf", "Pacific/Tahiti", "pg", "Pacific/Port_Moresby", "ph", "Asia/Manila", "pk", "Asia/Karachi", "pl", "Europe/Warsaw", "pm", "America/Miquelon", "pn", "Pacific/Pitcairn", "pr", "America/Puerto_Rico", "ps", "Asia/Gaza", "pt", "Europe/Lisbon", "pt", "Atlantic/Azores", "pw", "Pacific/Palau", "py", "America/Asuncion", "qa", "Asia/Qatar", "re", "Indian/Reunion", "ro", "Europe/Bucharest", "rs", "Europe/Belgrade", "ru", "Asia/Kamchatka", "ru", "Asia/Magadan", "ru", "Asia/Vladivostok", "ru", "Asia/Yakutsk", "ru", "Asia/Irkutsk", "ru", "Asia/Krasnoyarsk", "ru", "Asia/Novosibirsk", "ru", "Asia/Yekaterinburg", "ru", "Europe/Samara", "ru", "Europe/Moscow", "ru", "Europe/Kaliningrad", "rw", "Africa/Kigali", "sa", "Asia/Riyadh", "sb", "Pacific/Guadalcanal", "sc", "Indian/Mahe", "sd", "Africa/Khartoum", "se", "Europe/Stockholm", "sg", "Asia/Singapore", "sh", "Atlantic/St_Helena", "si", "Europe/Ljubljana", "sj", "Arctic/Longyearbyen", "sk", "Europe/Bratislava", "sl", "Africa/Freetown", "sm", "Europe/San_Marino", "sn", "Africa/Dakar", "so", "Africa/Mogadishu", "sr", "America/Paramaribo", "st", "Africa/Sao_Tome", "sv", "America/El_Salvador", "sy", "Asia/Damascus", "sz", "Africa/Mbabane", "tc", "America/Grand_Turk", "td", "Africa/Ndjamena", "tf", "Indian/Kerguelen", "tg", "Africa/Lome", "th", "Asia/Bangkok", "tj", "Asia/Dushanbe", "tk", "Pacific/Fakaofo", "tl", "Asia/Dili", "tm", "Asia/Ashgabat", "tn", "Africa/Tunis", "to", "Pacific/Tongatapu", "tr", "Europe/Istanbul", "tt", "America/Port_of_Spain", "tv", "Pacific/Funafuti", "tw", "Asia/Taipei", "tz", "Africa/Dar_es_Salaam", "ua", "Europe/Kiev", "ug", "Africa/Kampala", "um", "Pacific/Wake", "um", "Pacific/Johnston", "um", "Pacific/Midway", "us", "America/New_York", "us", "America/Chicago", "us", "America/Denver", "us", "America/Los_Angeles", "us", "America/Anchorage", "us", "Pacific/Honolulu", "uy", "America/Montevideo", "uz", "Asia/Tashkent", "va", "Europe/Vatican", "vc", "America/St_Vincent", "ve", "America/Caracas", "vg", "America/Tortola", "vi", "America/St_Thomas", "vn", "Asia/Saigon", "vu", "Pacific/Efate", "wf", "Pacific/Wallis", "ws", "Pacific/Apia", "ye", "Asia/Aden", "yt", "Indian/Mayotte", "za", "Africa/Johannesburg", "zm", "Africa/Lusaka", "zw", "Africa/Harare", };
测试程序下载地址:
http://download.csdn.net/detail/xzy2046/8161511