/*** 美國時間轉中國時間
* @param date
* @param oldzone
* @param newzone
* @return
*/public staticdatechangetimezone
(datedate,
timezone oldzone,
timezone newzone)
public staticdatestrtodate
(stringstr)
關鍵原理:
時間和日曆是兩個不同的概念。
date代表的是乙個絕對時間,也就是說,不管你在哪個時區,date都是一樣的,都是從2023年1月1日0點0分gmt時間起,到目前這一刻的毫秒數。所以,你第一段**和第二段**裡面,得到的date物件所代表的時間其實是一樣的。
而日曆是人們對絕對時間的一種描述方法,例如某年某月某日幾時幾分幾秒,這,隨著你當前所處的時區和地區而不同。
你在觀察date物件的時候,你肯定沒有去看它的毫秒數,而是先把毫秒數轉換成乙個日曆。你沒有寫出你是怎麼把date轉換成日曆的,但假如你是用預設的date.tostring()的話,那麼,這是根據當前的預設時區來把毫秒數轉換成日曆的。因此,你在第一段**裡沒有修改預設時區,得到的還是美國時間。而在第二段**裡,因為修改了預設時區,所以雖然絕對時間沒有變化,但是你轉換得到的日曆不一樣了。
其實,如果你是要獲取當前時間,那麼直接用new date()就可以了,跟你先建立乙個calendar物件,再指定乙個時區後獲取的date是完全一樣的。只有在你需要把乙個date用日曆來表示的時候,才需要用到calendar和timezone。
一些總結:
calendar.settimezone():你在calendar物件裡面set的日期(日曆)是對於哪個時區來說的
calendar.gettime():你說說的這個日期(日曆),從1970(標準時區的這個日期)到現在過了多少秒
******dateformat.settimezone(timezone.gettimezone("america/los_angeles"));
******dateformat.format(date):按照時區,來對時間戳進行日期(日曆)格式化
android 時間處理(夏令時)
最近,在忙乙個計步器的專案,模組出口國外,軟體自然得國際化。軟體上架後老外一用出現了乙個重大的bug 模組與手機時間不同步,各時區時間塊一小時或慢一小時,還有的快半小時與慢半小時的,也沒有做夏令時處理。在網上找了許多論壇,始終沒有這方面 夏令時處理的 只能說最笨的方法乙個個的列舉,辛苦啊,時區id差...
夏令時 遊戲時間邏輯處理
遊戲中使用gettimeofday 獲取從1970 01 01 00 00 00到現在經過的真實秒數 當進入遊戲時使用localtime來判斷 tm.tm isdst是否有從夏令時進出,進入夏令時,呼叫gettimeofday 和mktime的時間是相同的,離開夏令時,呼叫gettimeofday ...
日期與時間函式與夏令時的關係
測試環境 vmware12 pro centos 7 1.time t 為從公元1970 年1 月1 日0 時0 分0 秒算起至今的utc 時間所經過的秒數 2.結構tm的定義為 struct tm 1.time t time time t t 該函式會返回從公元1970年1月1日的utc時間從0時...