日期:2014-05-20  浏览次数:20821 次

J2ME 获取正确的时区
http://www.3geye.net/?3/viewspace-309

在J2me 里面获取时间本地时间也是要花费点功夫的,下面看看我整理的一些资料,
如果手机是行货的话,那到正确的手机时间是没问题的,水货的话则需要做下手脚,上面的纯粹是我个人的猜测,具体还是要看下,
具体还是要运行下才知道。下面看看这些东西吧

J2ME类库中util包中缩减好多,貌似找不到获取本地TimeZone的方法

尝试下了如下代码,但是输出为GMT时间

TimeZone?? t?? =?? TimeZone.getTimeZone("GMT+08:00");//获取东8区TimeZone
Clandar?? c?? =?? Calendar.getInstance(?? t?? );
String?? time?? =?? c.getTime().toString();
System.out.println(time);//输出为GMT时间

其中GMT=08:00表示北京时间


看看更详细的描述

在时间的表达上,经常要使用到时区的概念,在J2ME中关于这个概念,有一个专门的类——TimeZone类。

?????? 在地理上,地球被划分为24个时区,中国北京时间属于东八区,乌鲁木齐时间属于东六区,而程序中对于时间的默认实现是以伦敦时间为标准,这样就产生了八个小时的时差,所以为了让你的程序更加通用,J2ME的CLDC API中实现了时区类。

?????? TimeZone类属于java.util包,在J2ME中的该类是对于J2SE中TimeZone的简化。该类是一个抽象类,使用时需要注意。

?????? 如果想获得实际手机使用区域的默认时区,可以使用以下的代码实现:

????????????? TimeZone defaultZone = TimeZone. getDefault();

?????? 例如你实际使用的手机在中国,则获得是东八区,是其他区域的,则是其他区域的时区对象。

?????? 实际中,每个时区都有一个ID,使用这个ID来代表该时区。但是TimeZone在实现过程中,只实现了一部分,获得可用的时区ID的代码如下:

????????????? String[] listId = TimeZone. getAvailableIDs();

?????? 这样就可以获得手机对于时区ID的支持情况了。

?????? 当你获得了默认的时区以后,也可以获得该时区和伦敦时间的差异,其中timeZone是创建好的时区对象,使用的方法如下:

????????????? int offset = timeZone. getRawOffset();

?????? 获得当前时区对象的ID标识可以使用如下方法获得:

????????????? String id = timeZone.getID();

?????? 和J2SE中的TimeZone相比,J2ME中没有提供该类的子类实现,而把对该类的实现交给了手机厂商进行实现,这些内容对于J2ME开发者来说都是透明的,在实际的开发过程中不影响具体的使用。