现在的位置: 首页 > 综合 > 正文

J2ME中时间的使用

2013年12月05日 ⁄ 综合 ⁄ 共 2512字 ⁄ 字号 评论关闭

时间处理在程序开发中相当常见,下面对于时间处理做一个简单的说明。

一、时间的表达方式

时间在J2ME中有两种表达方式:

1、以和GMT1970年1月1号午夜12点和现在相差的毫秒数来代表

这种方式适合比较两个时间之间的差值。

2、以对象的形式来表达

二、时间处理的相关类

时间处理在J2ME中涉及三个类:

1、System类

long time = System. currentTimeMillis();

使用该方法可以获得当前时间,时间的表达方式为上面提到的第一种。

2、Date类

Date date = new Date();

获得当前时间,使用对象的形式来进行表达。

3、Calendar类

Calendar calendar = Calendar. getInstance();

三、时间处理的具体操作

1、以上三种表达方式的转换:

a)将System类获得的时间转换为Date对象

Date date = new Date(System. currentTimeMillis());

b)将Date类型的对象转换为Calendar类型的对象

Calendar calendar = Calendar. getInstance();
Date date = new Date();
calendar.setTime(date);

2、使用Calendar完成一些日期操作:

Calendar是时间处理中最常用也是功能最强大的类,可以用它来获得某个时间的日期、星期几等信息。

获得日期:

Calendar calendar = Calendar. getInstance();
……
int day = calendar.get(Calendar. DATE);

获得日期、年份、星期的操作和这个类似。

需要注意的是:Calendar中表示月份的数字和实际相差1,即1月用数字0表示,2月用数字1表示,……12月用数字11表示。

参考资料:http://dev.yesky.com/224/2204224.shtml

======================================================================

j2me中是通过Date和Calendar两个类来对日期进行完整操作的。
Java中的日期都使用long类型表示,意思是从1970年1月1日,00:00:00 GMT开始的毫秒数。
Date类位于java.util.Date;
它有两个构造函数:
       Date();可获取当前系统的时间,相当于调用:System.currentTimeMillis();
       Date(long date);在构造的时候设置一个初始值。参数date是一个表示时间的参数。
       该类有以下两个方法来设置和获取日期值。      
       void setTime(long time)
       long getTime()
midp中Date不能使用年月日标示,通常需要和Calendar类结合使用。
Calendar类位于java.util.Calendar;
不能使用new方法构造Calendar对象,需要使用它的静态方法getInstance(),也可以为它制定一个时区参数getInstance(TimeZone zone)。此外还可以分别使用下面的方法设置和获取此Calendar对象的时区:
       void setTimeZone(TimeZone value)
       getTimeZone()
       使用getTimeZone()方法可以获取Calendar对象的当前时间,返回一个Date对象。而使用方法setTime(Date date)用来设置Calendar对象的当前时间。
       通过Calendar对象可以获取和设置每个时间字段的值,比如年、月、日、时、分、秒等。下面是我在实际工作中用到的一个将System.currentTimeMillis()获得的时间,转换成字符串(String),并在屏幕输出的函数进行的扩展和变形,这个例子几乎涵盖了Date类和Calendar类中所有的字段和方法。如下:

public String getDateString(long time) {
    String str = "";
    Date date = new Date(time);
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    str = String.valueOf(calendar.get(Calendar.YEAR)) + "年" +
        String.valueOf(calendar.get(Calendar.MONTH)) + "月" +
        String.valueOf(calendar.get(Calendar.DATE)) + "日" +
        String.valueOf(calendar.get(Calendar.DAY_OF_WEEK)) + "//周几" +
        String.valueOf(calendar.get(Calendar.AM_PM)) + "(午前或午后" +
        String.valueOf(calendar.get(Calendar.HOUR_OF_DAY)) + "时)" +
        String.valueOf(calendar.get(Calendar.HOUR)) + "时" +
        String.valueOf(calendar.get(Calendar.MINUTE)) + "分" +
        String.valueOf(calendar.get(Calendar.SECOND)) + "秒" +
        String.valueOf(calendar.get(Calendar.MILLISECOND)) + "毫秒";
    return str;
}
如果调用getDateString(System.currentTimeMillis());返回结果可能是:
2007年5月16日周317时(午后5时)56分25秒900毫秒

抱歉!评论已关闭.