Java处理日期的类

Java语言提供了3个类来处理日期:

  • java.util.Date:包装了一个long类型的数据,表示与GMT(格林尼治标准时间)的1970年1月1日 00:00:00这一时刻所相距的毫秒数。

看Date类的成员与构造方法;

...

//用于记录毫秒数
private transient long fastTime;

...
public Date() {
        this(System.currentTimeMillis());
    }

public Date(long date) {
        fastTime = date;
    }

例如:

Date date = new Date();
//getTime()方法返回Date对象包含的毫秒数
System.out.println(date.getTime());//打印1509090630565

Date类的方法大多已经过时,剩下的主要有:

  • long getTime():返回Date对象包含的毫秒数

  • void setTime(long time):设置Date对象包含的毫秒数

  • boolean before(Date when)、boolean after(Date when)、int compareTo(Date anotherDate):比较时间的先后

Date date = new Date();
Date date1 = new Date();
date1.setTime(1509090620565L);
System.out.println(date);
System.out.println(date1);
System.out.println(date.after(date1));
System.out.println(date.before(date1));
System.out.println(date.compareTo(date1));

图1

  • java.util.Calendar:可以灵活地设置或读取日期中的年月日时分秒等信息。

Calendar本身是一个抽象类,不能直接实例化,但是Calendar类提供一个工厂方法,即getInstance来创建一个Calendar实例。

Calendar的使用:

Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
System.out.print(calendar.get(Calendar.YEAR) + " ");
System.out.print(calendar.get(Calendar.MONTH) + " ");
System.out.println(calendar.get(Calendar.DATE) + " ");
calendar.set(Calendar.YEAR, 2016);
calendar.set(Calendar.MONTH, 11);
calendar.set(Calendar.DATE, 12);
System.out.println(calendar.getTime());

图2

Calendar的一月是从0开始的,即你设定月份为11时,其实是12月。

国际化:

Calendar calendar = Calendar.getInstance(Locale.getDefault());
Calendar calendar1 = Calendar.getInstance(TimeZone.getDefault());
Calendar calendar2 = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault());
  • java.text.DateFormat:对日期进行格式化。

    DateFormat抽象类用于定制日期的格式,它有一个子类SimpleDateFormat,具体用法如下:

Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MMMM-dd-EEEE hh:mm:ss");
System.out.println(simpleDateFormat.format(date));
simpleDateFormat.applyPattern("yy/MM/dd HH:mm:ss");
System.out.println(simpleDateFormat.format(date));

图3

字符串”yyyy-MMMM-dd-EEEE hh:mm:ss”决定日期的格式。yyyy表示4位长度的年,而yy则表示2位长度的年,MMMM表示中文的月份,而MM则表示数字的月份,dd表示日,EEEE表示星期。hh、mm、ss表示时分秒,其中hh是12小时制的,HH是24小时制的。

DateFormat类的parse(String text)方法按照特定的格式把字符串解析成日期对象。

Date date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse("2017/10/30 08:51:00");

DateFormat类有一个静态方法:getDateTimeInstance(int dateStyle, int timeStyle)。该方法能返回标准格式的DateFormat对象。

Date date = new Date();

DateFormat shortDateFormat = 
    DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);

DateFormat mediumDateFormat = 
    DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);

DateFormat longDateFormat = 

    DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);

DateFormat fullDateFormat = 
    DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);

System.out.println(shortDateFormat.format(date));
System.out.println(mediumDateFormat.format(date));
System.out.println(longDateFormat.format(date));
System.out.println(fullDateFormat.format(date));

这里写图片描述

与此方法相似的还有:DateFormat getDateInstance(int style)与DateFormat getTimeInstance(int style),分别针对日期与时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值