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

[转]Android时间获取与使用的更多相关文章

  1. android 时间获取以及时间格式化

    Android中获取系统时间有多种方法,可分为Java中Calendar类获取,java.util.date类实现,还有android中Time实现 现总结如下: 方法一: void getTime1 ...

  2. android中获取时间

    android中获取时间 1)通过calendar类获取 Calendar calendar = Calendar.getInstance();int moth = calendar.get(Cale ...

  3. Android实现获取本机中所有图片

    本示例演示如何在Android中使用加载器(Loader)来实现获取本机中的所有图片,并进行查看图片的效果. 在这个示例中,我使用android-support-v4.jar中的加载器(Loader) ...

  4. Android中获取网页表单中的数据实现思路及代码

    在Android中获取网页里表单中的数据具体实现代码如下,感兴趣的各位可以参考过下哈,希望对大家有所帮助 MainActivity如下: 复制代码 代码如下: package cn.testjavas ...

  5. Android中获取网页表单中的数据

    MainActivity如下: package cn.testjavascript; import java.util.StringTokenizer; import android.os.Bundl ...

  6. Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用

    关于PackageManager和ActivityManager的使用 ,自己也写了一些DEMO 了,基本上写的线路参考了Settings模块下的 应用程序,大家如果真正的有所兴趣,建议大家看看源码, ...

  7. Android开发 获取视频中的信息(例如预览图或视频时长) MediaMetadataRetriever媒体元数据检索器

    前言 在Android里获取视频的信息主要依靠MediaMetadataRetriever实现 获取最佳视频预览图 所谓的最佳就是MediaMetadataRetriever自己计算的 /** * 获 ...

  8. URL转Drawable之 Android中获取网络图片的三种方法

    转载自: http://doinone.iteye.com/blog/1074283 Android中获取网络图片是一件耗时的操作,如果直接获取有可能会出现应用程序无响应(ANR:Applicatio ...

  9. android 中获取视频文件的缩略图(非原创)

    在android中获取视频文件的缩略图有三种方法: 1.从媒体库中查询 2. android 2.2以后使用ThumbnailUtils类获取 3.调用jni文件,实现MediaMetadataRet ...

随机推荐

  1. Til the Cows Come Home (dijkstra算法)

    Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before ...

  2. codeforces 620D Professor GukiZ and Two Arrays

    #include <bits/stdc++.h> using namespace std; + ; const long long inf = 1e18; int n, m; long l ...

  3. Go语言基础之20--web编程框架之Gin框架

    一.Gin框架介绍 1.1 简介 A. 基于httprouter开发的web框架. http://github.com/julienschmidt/httprouter B. 提供Martini风格的 ...

  4. Wireshark抓包数据:理解与分析

    wireshark是一个非常好用的抓包工具,本文根据平时抓包经验,对之前wireshark抓包的一些常见知识点进行了整理. 有不当之处,欢迎指正 1.SYN,FIN会消耗一个序号,单独的ACK不消耗序 ...

  5. vue混入(mixins)

    混入(mixins)是一种分发vue组件中可复用功能的非常灵活的方式.混入对象可以包含任意组件选项. 当组件使用混入对象时,所以混入对象的选项将被混入该组件本身选项,当组件和混入对象含有同名选项时,这 ...

  6. readline的用法

    with open(r'C:\Users\admin\pycdtest\wanyue\llduizhang_20180207\33_1517970821000304388_119061116',enc ...

  7. 晶振电路的设计-AN2867学习

    一 石英晶体的等效电路.带宽: FS~FA之间就是并联带宽,越窄稳定性越好.其中Fs.Fa为Lm/Rm/Cm电抗分别为0和无穷大时的谐振频率).Fp为工作频率(通过调整负载电容CL来达到中心频率) 起 ...

  8. [转]JS 只能输入数字和两位小数的JS

    本文转自:http://blog.sina.com.cn/s/blog_724008890101dgep.html JS代码: <script language="JavaScript ...

  9. pat04-树8. Complete Binary Search Tree (30)

    04-树8. Complete Binary Search Tree (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHE ...

  10. java学习第十二天

    1:Scanner的使用(了解) (1)在JDK5以后出现的用于键盘录入数据的类. (2)构造方法: A:讲解了System.in这个东西. 它其实是标准的输入流,对应于键盘录入 B:构造方法 Inp ...