編輯:關於Android編程
在項目開發中,很多時候會用到android的時間,羅列一下獲取的時間的方式,和大家共同學習進步
一、獲取系統時間
1.通過Calendar類來獲取系統當前的時間
Calendar calendar = Calendar.getInstance(); long unixTime = calendar.getTimeInMillis();//這是時間戳 Logger.i(TAG,"calendar--->>>"+"當前時間為:" + calendar.get(Calendar.YEAR) + "年 " + calendar.get(Calendar.MONTH) + "月 " + calendar.get(Calendar.DAY_OF_MONTH) + "日 " + calendar.get(Calendar.HOUR_OF_DAY) + "時 " + calendar.get(Calendar.MINUTE) + "分 " + calendar.get(Calendar.SECOND) + "秒");打印結果如下:
calendar--->>>當前時間為:2016年 6月 13日 14時 38分 58秒
2.通過Time來獲取,android的文檔中說使用Time比Calendar對CPU的性能損耗更小,我卻不推薦使用Time,因為Time使用必須在24小時制的系統中,如果用戶手機就設成12小時制的,這時就有誤差
Time times = new Time("GMT+8"); /*對於已經設定為GMT時間標准的dateFormat來說,一切需要他轉換的字符串日期都是GMT標准時間,轉換後返回的Date由於默認 *遵守系統默認時區,所以轉換給Date的日期需要+8(例如北京標准時區),也就是時區與標准不同導致的時差。*/ times.setToNow(); int year = times.year; int month = times.month; int day = times.monthDay; int minute = times.minute; int hour = times.hour; int sec = times.second; Logger.i(TAG,"當前時間為:" + year + "年 " + month + "月 " + day + "日 " + hour + "時 " + minute + "分 " + sec + "秒");打印結果:當前時間為:2016年 6月 13日 6時 38分 58秒
注意:這時的時間和上面使用時間是同一時間,不過時間我都調成是12小時制的
當然,還有其他的獲取方式,不過結果基本都一樣
importjava.text.SimpleDateFormat;
SimpleDateFormatformatter=newSimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
DatecurDate=newDate(System.currentTimeMillis());
Stringstr=formatter.format(curDate);
還有
DateFormatdf=newSimpleDateFormat("HH:mm:ss");
df.format(newDate());
二:獲取網絡時間
很多時候,由於手機的不確定性,導致各個手機的時間都不盡相同,如果開發中需要獲取統一的時間來匹配一些規則的時候,比如我之前公司就是通過或去當前時間並且轉換之後來匹配網絡連接的規則,防止大批量的抓包,那麼這個時候就需要一個統一的時間和後台進行匹配,這是簡單的使用獲取系統時間就可能存在問題,用戶手機如果調成自動獲取網絡時間的話沒問題,但是如果不是呢?所以獲取網絡時間就派上了用處
URL url = null;//取得資源對象 try { url = new URL("http://www.baidu.com"); URLConnection uc = url.openConnection();//生成連接對象 uc.connect(); //發出連接 ld = uc.getDate(); //取得網站日期時間 Logger.i(TAG,"ld---->>>>"+ld); } catch (Exception e) { e.printStackTrace(); }
另:(1)獲取android系統時間是24小時制還是12小時制:
ContentResolver cv = DoctorApplication.getApplication().getContentResolver(); //DoctorApplication.getApplication()我自己定義的上下文這是,使用的時候換成自己的就行
String strTimeFormat = android.provider.Settings.System.getString(cv,android.provider.Settings.System.TIME_12_24);Logger.i(TAG,"strTimeFormat========="+strTimeFormat); 打印結果:
strTimeFormat=========12
剛才為了測試那個Time調成的12小時制
(2)獲取當前系統的對應的其他地方去時間
上海:
獲取本機時間對應的上海時間:
Time shanghai = new Time("Asia/Shanghai"); shanghai.set(System.currentTimeMillis()); Logger.i(TAG,"mShangHaiTime----->>>"+shanghai.format2445());
(3)
計算手機當前時區和北京時區的差值:
Date date = new Date(); long timezoneDiff = TimeZone.getDefault().getOffset(date.getTime()) - TimeZone .getTimeZone("GMT+8").getOffset(date.getTime());
引申釋義
一、Unix時間戳
4、TimeZone
在開發中,我們可以通過TimeZone對象獲取關於系統默認時區及其相關的詳細信息。
//主要城市,國家對應表 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", };
前言在操作系統中,線程是操作系統調度的最小單元,同事線程又是一種受限的系統資源,即線程不能無限制地產生,並且線程的創建和銷毀都有一定的開銷.當系統中存在大量的線程時,系統
vivo X9作為此前X7的升級版,外觀變化不大,主要變化在於背面天線變了,采用類似魅族MX6/iPhone7類似的弧線天線設計,背面金屬屏占比更高,外觀顯
本文實例講述了Android編程獲取系統隱藏服務實現鎖屏的方法。分享給大家供大家參考,具體如下:實現原理:當按鎖屏鍵時,會發出一個廣播,當界面接收到一個廣播就可以實現鎖頻
跟著代碼看一看豆瓣開源的混合開發框架Rexxaar // 初始化rexxar Rexxar.initialize(this);