日期类
第一代类 Date
可以精确到毫秒,代表特定的瞬间
-
Date 精确到毫秒
-
SimpleDateFormat: 格式和解析日期的类
-
允许进行格式化(日期->文本)、(文本->日期)和规范化
-
常用方法
public class Date01 { public static void main(String[] args) throws ParseException { Date d1 = new Date();//获取当前时间 Date d2 =new Date(222222222);//指定毫秒数获得 System.out.println(d1.getTime());//获取某个时间段的毫秒数 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss E"); String format = sdf.format(d1);//格式化日期,返回字符串 System.out.println(format); //格式化 // String->Date // sdf格式与String格式一致,否则会抛出转换异常。 String s ="1996年01月02日 10:20:30 星期一"; Date parse = sdf.parse(s); format = sdf.format(parse); System.out.println(format); } }
第二代日期类
主要是Calendar类(日历)
-
是一个抽象类,为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONYH等日历字段之间的转换 提供一些方法,并为操作日历字段提供一些方法,
常用方法
public class Calendar01 { public static void main(String[] args) { //创建实例 getInstance() Calendar instance = Calendar.getInstance(); // 获取日历的某个字段 System.out.println("年: "+instance.get(Calendar.YEAR)); //+1 默认是从0开始计算 System.out.println("月: "+(instance.get(Calendar.MONTH)+1)); System.out.println("日: "+instance.get(Calendar.DAY_OF_MONTH)); // 若是24小时进制,则是HOUR_OF_DAY System.out.println("时: "+instance.get(Calendar.HOUR)); System.out.println("分: "+instance.get(Calendar.MINUTE)); System.out.println("秒: "+instance.get(Calendar.SECOND)); //输出格式需要自己组合 } }
第三代日期类
前两代日期类的问题
-
可变性:像日期和时间这样的类应该是不可变的
-
偏移性: Date中的年份是从1900开始的,而月份都是从0开始
-
格式化:格式化对Date有用,Calendar则不行
-
他们都不是线程安全的,不能处理闰秒等(每隔2天,多出1s)
常见方法(JDK8加入的)
-
LocalDate 只显示日期 年月日
-
LocalTime 只显示时间 时分秒
-
LocalDateTime 显示年月日-时间
public class LocalDate_ { public static void main(String[] args) { //获取当前时间 LocalDateTime now = LocalDateTime.now();//LocalTime.now() // 返回年 System.out.println(now.getYear()); // 月 System.out.println(now.getMonth());//英文 System.out.println(now.getMonthValue());//数字 //日 System.out.println(now.getDayOfMonth()); //时 System.out.println(now.getHour()); //分 System.out.println(now.getMinute()); //秒 System.out.println(now.getSecond()); //获取时分秒 LocalTime now1 = LocalTime.now(); //获取年月日 LocalDate now2 = LocalDate.now(); } }
格式化
DateTimeFormat 格式化
//获取当前时间 LocalDateTime now = LocalDateTime.now(); DateTimeFormatter dtf =DateTimeFormatter.ofPattern("yyyy年MM月dd日 hh:mm:ss"); String format = dtf.format(now); System.out.println(format);
时间戳
提供一系列和Date类转换的方式
-
Instant-->Date
-
Date date = Date.from(intstant);
-
-
Date -->instant
-
Instant instant = Date.toInstant();
-
Instant now3 = Instant.now(); System.out.println(now3); Date from = Date.from(now3); Instant instant = from.toInstant(); System.out.println(instant);