android 夏令时,android 时间处理(夏令时)
最近,在忙一個(gè)計(jì)步器的項(xiàng)目,模塊出口國(guó)外,軟件自然得國(guó)際化。軟件上架后老外一用出現(xiàn)了一個(gè)重大的Bug:模塊與手機(jī)時(shí)間不同步,各時(shí)區(qū)時(shí)間塊一小時(shí)或慢一小時(shí),還有的快半小時(shí)與慢半小時(shí)的,也沒(méi)有做夏令時(shí)處理。
在網(wǎng)上找了許多論壇,始終沒(méi)有這方面(夏令時(shí)處理的),只能說(shuō)最笨的方法一個(gè)個(gè)的列舉,辛苦啊,時(shí)區(qū)ID差不多有一百個(gè),可以處理完還是經(jīng)不起老外考驗(yàn),bug依然存在;
今天認(rèn)真地花上了一段時(shí)間找規(guī)律,終于解決了。分享一下!!!!!!!!!!!!!!!!!!!!!!
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 因?yàn)槠鹗紩r(shí)間如俄羅斯2000-01-01 00:00:00,我們把這個(gè)時(shí)間定為0時(shí),但實(shí)際上沒(méi)有考慮夏令時(shí)實(shí)際時(shí)間是baseDstOffest ,因此我們要定為0時(shí)必須在當(dāng)時(shí)的時(shí)間減掉dst偏移量
long curtime = curCalendar.getTimeInMillis()-baseCalendar.getTimeInMillis()-baseDstOffest+curDstOffest; //經(jīng)過(guò)上面的加減最張得到了一個(gè)準(zhǔn)確的時(shí)間 } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); }
總結(jié)
以上是生活随笔為你收集整理的android 夏令时,android 时间处理(夏令时)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Halcon缺陷检测系列
- 下一篇: 2013年中秋节放假安排