[转]Android时间获取与使用

编写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

posted @ 2015-04-13 15:56  rabtor  阅读(1013)  评论(0编辑  收藏  举报