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对象
1 Calendar c = Calendar.getInstance();//默认是当前日期
1 //创建一个代表2009年6月12日的Calendar对象 2 Calendar c1 = Calendar.getInstance(); 3 c1.set(2009, 6 , 12);
常量 | 描述 |
---|---|
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 | 星期几 |
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设置以此类推
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);