android 夏令时,android 时间处理(夏令时)
最近,在忙一個計步器的項目,模塊出口國外,軟件自然得國際化。軟件上架后老外一用出現了一個重大的Bug:模塊與手機時間不同步,各時區時間塊一小時或慢一小時,還有的快半小時與慢半小時的,也沒有做夏令時處理。
在網上找了許多論壇,始終沒有這方面(夏令時處理的),只能說最笨的方法一個個的列舉,辛苦啊,時區ID差不多有一百個,可以處理完還是經不起老外考驗,bug依然存在;
今天認真地花上了一段時間找規律,終于解決了。分享一下!!!!!!!!!!!!!!!!!!!!!!
try {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
Date date = dateFormat.parse("2000-01-01 00:00:00");
Date curDate= new Date();
Calendar baseCalendar = Calendar.getInstance();
baseCalendar.setTime(date);
int baseDstOffest= baseCalendar.get(Calendar.DST_OFFSET);
Calendar curCalendar = Calendar.getInstance();
curCalendar.setTime(dateFormat.parse(dateFormat.format(curDate)));
int curDstOffest= curCalendar.get(Calendar.DST_OFFSET);
//baseCalendar.getTimeInMillis()-baseDstOffest 因為起始時間如俄羅斯2000-01-01 00:00:00,我們把這個時間定為0時,但實際上沒有考慮夏令時實際時間是baseDstOffest ,因此我們要定為0時必須在當時的時間減掉dst偏移量
long curtime = curCalendar.getTimeInMillis()-baseCalendar.getTimeInMillis()-baseDstOffest+curDstOffest; //經過上面的加減最張得到了一個準確的時間 } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); }
總結
以上是生活随笔為你收集整理的android 夏令时,android 时间处理(夏令时)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Halcon缺陷检测系列
- 下一篇: 2013年中秋节放假安排