Jave中的日期

Java中的日期

获取当前时间

 1 Date date=new Date(); 2 System.out.println(date); 3 运行结果:Wed Oct 21 13:27:08 CST 2020 

日期比较

1 使用getTime()

​ 可以使用getTime()来获得自1970年1月1日午夜十二时起已经过的毫秒数,然后比较两个对象的值。

 1 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 2 
 3 System.out.println("*****************************");
 4         System.out.println(">>日期比较,Long类型,getTime()");
 5         String dateStr1="2020-10-01 00:00:00";
 6         String dateStr2="2020-10-02 00:00:00";
 7 
 8         Long date1=sdf.parse(dateStr1).getTime();
 9         Long date2=sdf.parse(dateStr2).getTime();
10         System.out.println("date1: "+date1+"  date2: "+date2 );
11         boolean res=date1>date2;
12         System.out.println("date1大于date2?"+res);
13 
14 运行结果
15 *****************************
16 >>日期比较,Long类型,getTime()
17 date1: 1601481600000  date2: 1601568000000
18 date1大于date2?false

2 可以使用before( ),after( ),和equals( )方法

​ 可以使用before( ),after( ),和equals( )方法,由于12日在18日前,例如,new Date(99, 2, 12).before(new Date (99, 2, 18))返回值为true。

 1 System.out.println("*****************************");
 2         System.out.println(">>日期比较,Date类型,before() after() equals()");
 3         String dateStr3="2020-10-01 00:00:00";
 4         String dateStr4="2020-10-02 00:00:00";
 5         System.out.println("dateStr3 before dateStr4? "+sdf.parse(dateStr3).before(sdf.parse(dateStr4)));
 6         System.out.println("dateStr3 after dateStr4? "+sdf.parse(dateStr3).after(sdf.parse(dateStr4)));
 7         System.out.println("dateStr3 equals dateStr4? "+sdf.parse(dateStr3).equals(sdf.parse(dateStr4)));
 8 
 9 运行结果
10 *****************************
11 >>日期比较,Date类型,before() after() equals()
12 dateStr3 before dateStr4? true
13 dateStr3 after dateStr4? false
14 dateStr3 equals dateStr4? false

3使用compareTo()方法

可以使用compareTo()方法,这是由Comparable接口定义,由Date实现。

 1 System.out.println("*****************************");
 2         System.out.println(">>日期比较,Date类型, compareTo()");
 3         String dateStr5="2020-10-03 00:00:00";
 4         String dateStr6="2020-10-02 00:00:00";
 5         System.out.println("dateStr5 compareTo dateStr6: "+sdf.parse(dateStr5).compareTo(sdf.parse(dateStr6)));
 6 
 7 执行结果
 8 *****************************
 9 >>日期比较,Date类型, compareTo()
10 dateStr5 compareTo dateStr6: 1

日期格式化 

使用SimpleDateFormat格式化日期

Date 、Timestamp 转String

 1 //Date 、Timestamp 转String
 2         System.out.println("*****************************");
 3         System.out.println(">>Date 、Timestamp 转String");
 4         Date date7=new Date();
 5         System.out.println("Date -> String: "+sdf.format(date7));
 6 
 7         String dateStr8="2020-10-02 00:00:00";
 8         Timestamp timestamp=Timestamp.valueOf(dateStr8);
 9         System.out.println("Timestamp -> String: "+sdf.format(timestamp));
10 
11 执行结果
12 *****************************
13 >>Date 、Timestamp 转String
14 Date -> String: 2020-10-21 14:28:27
15 Timestamp -> String: 2020-10-02 00:00:00

String 转Date 、Timestamp

 1  //String 转 Date 、Timestamp
 2         System.out.println("*****************************");
 3         System.out.println(">>Date 、Timestamp 转String");
 4         String dateStr9="2020-10-02 00:00:00";
 5         System.out.println("String -> Date: "+sdf.parse(dateStr9));
 6         System.out.println("Timestamp -> Date: "+Timestamp.valueOf(dateStr9));
 7 
 8 执行结果
 9 *****************************
10 >>String 转 Date 、Timestamp
11 String -> Date: Fri Oct 02 00:00:00 CST 2020
12 Timestamp -> Date: 2020-10-02 00:00:00.0

Calendar 

创建一个代表系统当前日期的Calendar对象  

 创建一个代表系统当前日期的Calendar对象

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

创建一个指定日期的Calendar对象  

1 //创建一个代表2009年6月12日的Calendar对象
2 Calendar c1 = Calendar.getInstance();
3 c1.set(2009, 6 , 12);

Calendar类对象字段类型

常量描述
Calendar.YEAR 年份
Calendar.MONTH 月份
Calendar.DATE 日期
Calendar.DAY_OF_MONTH 日期,和上面的字段意义完全相同
Calendar.HOUR 12小时制的小时
Calendar.HOUR_OF_DAY 24小时制的小时
Calendar.MINUTE 分钟
Calendar.SECOND
Calendar.DAY_OF_WEEK 星期几

Calendar类对象信息的设置

 Set设置

1 //Calendar类对象信息的设置:Set设置
2         System.out.println("*****************************");
3         System.out.println(">>Set设置");
4         Calendar c1 = Calendar.getInstance();
5         //把 c1对象代表的日期设置为10号,其它所有的数值会被重新计算
6         c1.set(Calendar.DATE,10);
7         //把c1对象代表的年份设置为2008年,其他的所有数值会被重新计算
8         c1.set(Calendar.YEAR,2020);

其他字段的set设置以此类推

Add设置

1  //Calendar类对象信息的设置:Add设置
2         System.out.println("*****************************");
3         System.out.println(">>Add设置");
4         Calendar c2 = Calendar.getInstance();
5         //把c2对象的日期加上10,也就是c1也就表示为10天后的日期,其它所有的数值会被重新计算
6         c2.add(Calendar.DATE,10);
7         //把c1对象的月份减去10,也就是c1也就表示为5个月前的日期,其它所有的数值会被重新计算
8         c2.add(Calendar.MONTH,-5);

其他字段的add设置以此类推

Calendar类对象信息的获得

 1 //Calendar类对象信息的获得
 2         System.out.println("*****************************");
 3         System.out.println(">>获取信息");
 4         Calendar c3 = Calendar.getInstance();
 5         // 获得年份
 6         int year = c1.get(Calendar.YEAR);
 7         // 获得月份
 8         int month = c1.get(Calendar.MONTH) + 1;
 9         // 获得日期
10         int date = c1.get(Calendar.DATE);
11         // 获得小时
12         int hour = c1.get(Calendar.HOUR_OF_DAY);
13         // 获得分钟
14         int minute = c1.get(Calendar.MINUTE);
15         // 获得秒
16         int second = c1.get(Calendar.SECOND);
17         // 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
18         int day = c1.get(Calendar.DAY_OF_WEEK);
原文地址:https://www.cnblogs.com/LifeFruit/p/13852264.html