你的位置:首页 > 操作系统

[操作系统][转]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