日期时间类

日期时间类

Date类

java.util.Date,表示特定的瞬间,精确到毫秒。

构造方法

从JDK1.1开始,就只保留了以下两种构造方法:

  • Date()
    不用多说,new 出来的 Date 就是当前时间。
  • Date(long date)
    分配 Date 对象并初始化此对象,入参为从历元(即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

Date类常用方法

序号 方法 描述
1 boolean after(Date date) 若当调用此方法的Date对象在指定日期之后返回true,否则返回false
2 boolean before(Date date) 若当调用此方法的Date对象在指定日期之前返回true,否则返回false
3 int compareTo(Date date) 比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数
4 boolean equals(Object date) 当调用此方法的Date对象和指定日期相等时候返回true,否则返回false
5 long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数
6 void setTime(long time) 用时间戳设置时间和日期
7 String toString() 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)

日期比较

可以使用以下三种方法对两个日期进行比较:

  • 使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值
  • 使用方法 before()after()equals()。例如,一个月的12号比18号早,则:
new Date(99, 2, 12).before(new Date (99, 2, 18))    //返回true
  • 使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。

获取一个指定时间的Date对象

可以使用CalendargetTime()方法,返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。

后面有讲。

Calendar类

我们现在已经能够格式化并创建一个日期对象了,但是我们如何才能设置和获取日期数据的特定部分呢,比如说小时,日,或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar类。

java.utiI.Calendar,是一个抽象类,
用于设置和获取日期/时间数据的特定部分。
Calendar类提供一些方法和静态字段来操作日历。

获取Calendar对象

Calender是抽象类,所以不能被实例化,可以使用Calendar的getInstance()方法获取Calendar对象:

Calendar calendar = Calendar.getInstance();    //默认是当前日期

Calendar常用方法

序号 方法 描述
1 int get(int field) 返回给定日历字段的值,参数为常量,可以得到:年、月、日、小时、分钟、星期几
2 void set(int year, int month, int date) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
3 void set(int year, int month, int date, int hourOfDay, int minute) 设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值
4 void set(int year, int month, int date, int hourOfDay, int minute, int second) 设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值
5 void setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间
6 Date getTime() 返回一个表示此 Calendar 时间值的 Date 对象
7 void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量
8 int getActualMaximum(int field) 返回当前月份的天数,参数为Calendar.DATE

Calendar常量

常量 描述
Calendar.YEAR
Calendar.MONTH
Calendar.DAY_OF_MONTH
Calendar.DATE 日,和Calendar.DAY_OF_MONTH完全相同
Calendar.HOUR 小时(12小时制)
Calendar.HOUR_OF_DAY 小时(24小时制)
Calendar.MINUTE 分钟
Calendar.SECOND
Calendar.DAY_OF_WEEK 星期几

Calendar类对象信息的获得

Calendar calendar=Calendar.getInstance();

int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH)+1;
int day=calendar.get(Calendar.DAY_OF_MONTH);
int hour=calendar.get(Calendar.HOUR_OF_DAY);
int minute=calendar.get(Calendar.MINUTE);
int second=calendar.get(Calendar.SECOND);
int week=calendar.get(Calendar.DAY_OF_WEEK)-1;

System.out.println("现在是:"+year+"年"+month+"月"+day+"日 "+hour+":"+minute+":"+second+" 星期"+week);
//现在是:2017年12月31日 15:57:39 星期0
//-1之后,0表示星期日

给Calendar对象设置指定日期

Calendar calendar=Calendar.getInstance();
//设置为:2017年10月1日 22:59:59
//在设置时间是,月要-1
calendar.set(2017,10-1,1,22,59,59);

使用add()方法修改时间

//今天
Calendar calendar=Calendar.getInstance();

int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH)+1;
int day=calendar.get(Calendar.DAY_OF_MONTH);
int week=calendar.get(Calendar.DAY_OF_WEEK)-1;
String[] currentDay={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

System.out.println("今天是:"+year+"年"+month+"月"+day+"日 "+currentDay[week]);    //今天是:2017年12月31日 星期日

//1天后
calendar.add(Calendar.DAY_OF_MONTH,+1);     //往后推移一天

year=calendar.get(Calendar.YEAR);
month=calendar.get(Calendar.MONTH)+1;
day=calendar.get(Calendar.DAY_OF_MONTH);
week=calendar.get(Calendar.DAY_OF_WEEK)-1;
System.out.println("明天是:"+year+"年"+month+"月"+day+"日 "+currentDay[week]);    //明天是:2018年1月1日 星期一

获取当月的天数

Calendar calendar=Calendar.getInstance();

int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH)+1;

System.out.println("今天是:"+year+"年"+month+"月");
System.out.println("本月一共有"+calendar.getActualMaximum(Calendar.DAY_OF_MONTH)+"天");

SimpleDateFormat类

使用SimpleDateFormat格式化日期

Date date=new Date();
System.out.println(date);   //Sun Dec 31 15:00:08 CST 2017

SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(format.format(date));    //2017-12-31 15:00:08

format=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a zzz");
System.out.println(format.format(date));    //2017-12-31 03:00:08 PM CST

### Calendar类
posted @ 2024-08-05 15:55  wen-210162704027  阅读(7)  评论(0编辑  收藏  举报