java的三代日期类
第一代日期类 Date
Date 类是在 java.util 包
Date:可以精确到毫秒,可以表示一个瞬间
1.SimpleDateFormat类:格式和解释日期的类,即,创建 SimpleDateFormat 对象,可以指定相应的格式。这里的格式已经规定好,字母已经是规定好了所代表的时间模式。
format方法:可以将日期转换为指定的格式字符串
2. public Date(long date)
分配一个 Date对象,并将其初始化为表示从标准基准时间(称为“时代”)
即1970年1月1日00:00:00 GMT起的指定毫秒数。
3.SimpleDateFormat类中的parse方法
可以把一个格式化字符串转成对应的Date
使用的sdf格式需要和你给的 String 的格式一样,否则会抛出转换异常
Date 测试代码:
package com.yjgTest.All;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Date1 {
public static void main(String[] args) throws ParseException {
Date d1=new Date();
System.out.println("当前时间:"+d1);
//1.创建SimpleDateFormat对象,可以指定相应的格式
//这里的格式已经规定好,字母已经是规定好了的代表的东西
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");
//format:将日期转换为指定的格式字符串
String format=sdf.format(d1);
System.out.println("当前时间:"+format);
//2.分配一个 Date对象,并将其初始化为表示从标准基准时间(称为“时代”)
// 即1970年1月1日00:00:00 GMT起的指定毫秒数。
Date d2=new Date(9234567);
System.out.println(sdf.format(d2));
//3.可以把一个格式化字符串转成对应的Date
//使用的sdf格式需要和你给的 String 的格式一样,否则会抛出转换异常
String s = "2012年08月24日 05:56:09 星期日";
Date parse=sdf.parse(s);
System.out.println(parse);
}
}
第二代日期类 Calendar
Calendar是在 java.util 包
Calendar:所述Calendar类是一个抽象类,可以为在某一特定时刻和一组,如YEAR , MONTH , DAY_OF_MONTH , HOUR 提供了一些方法,以及可以用于操纵该日历字段。
1. getInstance() 方法:
Calendar 是一个抽象类, 并且构造器是 private
可以通过 getInstance() 来获取实例
2. 提供大量的方法获取相应的字段提供给程序员
3. Calendar.HOUR 和Calendar.HOUR_OF_DAY区别:如果我们需要按照 24 小时进制来获取时间, Calendar.HOUR ==改成=> Calendar.HOUR_OF_DAY
Calendar测试代码:
package com.yjgTest.All;
import java.util.Calendar;
public class Calendar_ {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
System.out.println("c=" + c);
//获取日历对象的日历字段
System.out.println("年:" + c.get(Calendar.YEAR));
// 月份加一,因为 Calendar 返回月时候,是按照 0 开始编号
System.out.println("月:" + (c.get(Calendar.MONTH) + 1));
System.out.println("日:" + c.get(Calendar.DAY_OF_MONTH));
System.out.println("小时:" + c.get(Calendar.HOUR));
System.out.println("分钟:" + c.get(Calendar.MINUTE));
System.out.println("秒:" + c.get(Calendar.SECOND));
//Calender 没有专门的格式化方法,需要自己组合显示
//按照 12 小时进制来获取时间
System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" +
c.get(Calendar.DAY_OF_MONTH) + " " + c.get(Calendar.HOUR) + ":" + c.get(Calendar.MINUTE)
+ ":" + c.get(Calendar.SECOND) );
//按照 24 小时进制来获取时间
System.out.println( c.get(Calendar.YEAR)+"-"+ (c.get(Calendar.MONTH) + 1) + "-" +
c.get(Calendar.DAY_OF_MONTH) + " " +c.get(Calendar.HOUR_OF_DAY)+":" + c.get(Calendar.MINUTE)
+ ":" + c.get(Calendar.SECOND) );
}
}
第三代日期类 LocalDate LocalTime LocalDateTime
LocalDate:是一个不可变的日期时间对象,表示日期,通常被视为年月日。
LocalDateTime:是一个不可变的日期时间对象,代表日期时间,通常被视为年 - 月 - 日 - 时 - 分 - 秒。
LocalTime:是一个不可变的日期时间对象,代表一个时间,通常被看作是小时 - 秒。
1. now(): 使用 now() 返回表示当前日期时间的 对象
2.DateTimeFormatter : 使用 DateTimeFormatter 对象来进行格式化,格式化器用于打印和解析日期时间对象。类似SimpleDateFormat
3. plus 和minus “提供 plus 和 minus 方法可以对当前时间进行加或者减
LocalDate等 测试代码:
package com.yjgTest.All;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class LocalDate_ {
public static void main(String[] args) {
//1. 使用 now() 返回表示当前日期时间的 对象
//可以获取年月日获取到时分秒
//三个日期可以使用相同的方法获取到当前对应日历字段
LocalDateTime ldt = LocalDateTime.now(); //LocalDate.now();//LocalTime.now()
System.out.println("当前日期时间:"+ldt);
//2. 使用 DateTimeFormatter 对象来进行格式化
// 创建 DateTimeFormatter 对象
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String format = dateTimeFormatter.format(ldt);
System.out.println("格式化的日期:" + format);
//获取当前日期时间对象的日历字段
System.out.println("年=" + ldt.getYear());
System.out.println("月=" + ldt.getMonth());
System.out.println("月=" + ldt.getMonthValue());
System.out.println("日=" + ldt.getDayOfMonth());
System.out.println("时=" + ldt.getHour());
System.out.println("分=" + ldt.getMinute());
System.out.println("秒=" + ldt.getSecond());
LocalDate now1 = LocalDate.now(); //获取年月日
System.out.println(now1);
LocalTime now2 = LocalTime.now();//获取到时分秒
System.out.println(now2);
// 3.plus 和 minus 方法
//看看 50 天后的年月日-时分秒
LocalDateTime localDateTime = ldt.plusDays(50);
System.out.println("50天后=" + dateTimeFormatter.format(localDateTime));
//看看在 36000 分钟前的年月日-时分秒
LocalDateTime localDateTime2 = ldt.minusMinutes(36000);
System.out.println("36000分钟前日期=" + dateTimeFormatter.format(localDateTime2));
//看看 630 小时后的 年月日-时分秒
LocalDateTime localDateTime3 = ldt.plusHours(630);
System.out.println("630小时后日期=" + dateTimeFormatter.format(localDateTime3));
}
}