日期类

一、Date

精确到毫秒,代表特定的瞬间

SimpleDateFormat:格式和解析日期的类 允许进行格式化和规范化

  1. public class Date_ {
  2. public static void main(String[] args) throws ParseException {
  3. Date date = new Date(); // 获取当前系统时间
  4. System.out.println(date); // Sun Mar 06 19:34:33 CST 2022
  5. Date date1 = new Date(348593524); // 通过毫秒数得到时间
  6. System.out.println(date1); // Mon Jan 05 08:49:53 CST 1970
  7. // 创建SimpleDateFormat对象,可以指定相应的格式
  8. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy 年 MM 月 dd 日 hh:mm:ss E");
  9. String format = simpleDateFormat.format(date1); // 日期转换成指定格式的字符串
  10. System.out.println(format); //1970 年 01 月 05 日 08:49:53 星期一
  11. // String->Date
  12. String s = "2022 年 03 月 06 日 10:20:30 星期日";
  13. Date parse = simpleDateFormat.parse(s);
  14. System.out.println(parse); // Sun Mar 06 10:20:30 CST 2022
  15. System.out.println(simpleDateFormat.format(parse)); // 2022 年 03 月 06 日 10:20:30 星期日
  16. }
  17. }

二、Calendar类

可变(日期时间这样的类应该不可变),年份从1900年开始,月份从0开始,不是线程安全的,不能处理闰秒

  1. public class Calendar_ {
  2. public static void main(String[] args) {
  3. // 1. Calendar是一个抽象类,构造器是私有的,通过getIntance()获取实例
  4. Calendar c = Calendar.getInstance();
  5. System.out.println(c);//java.util.GregorianCalendar[time=1646615931793,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=2,WEEK_OF_YEAR=11,WEEK_OF_MONTH=2,DAY_OF_MONTH=7,DAY_OF_YEAR=66,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=9,HOUR_OF_DAY=9,MINUTE=18,SECOND=51,MILLISECOND=793,ZONE_OFFSET=28800000,DST_OFFSET=0]
  6. // 2. 获取某个日历字段
  7. System.out.println("年 " + c.get(Calendar.YEAR));
  8. System.out.println("月 " + (c.get(Calendar.MONTH)+1));// 月是从0开始的,要+1
  9. System.out.println("日 " + c.get(Calendar.DAY_OF_MONTH));
  10. System.out.println("时 " + c.get(Calendar.HOUR));//HOUR_OF_DATE 改成24进制
  11. System.out.println("分 " + c.get(Calendar.MINUTE));
  12. System.out.println("秒 " + c.get(Calendar.SECOND));
  13. // 没有格式化类
  14. }
  15. }

三、LocalDate、LocalTime、LocalDateTime

LocalDate 年月日

LocalTime 时分秒

LocalDateTime 年月日时分秒

  1. public class LocalDate_ {
  2. public static void main(String[] args) {
  3. LocalDateTime localDateTime = LocalDateTime.now(); // 2022-03-07T09:33:35.163
  4. System.out.println(localDateTime.getYear());
  5. System.out.println(localDateTime.getMonth()); // MARCH
  6. System.out.println(localDateTime.getMonthValue()); // 3
  7. System.out.println(localDateTime.getHour());
  8. System.out.println(localDateTime.getMinute());
  9. System.out.println(localDateTime.getSecond());
  10. LocalDate localDate = LocalDate.now(); // 2022-03-07
  11. LocalTime localTime = LocalTime.now(); // 09:38:41.106
  12. }
  13. }

DateTimeFormatter格式日期类

  1. public class LocalDate_ {
  2. public static void main(String[] args) {
  3. // now()返回表示当前日期时间的对象
  4. LocalDateTime localDateTime = LocalDateTime.now(); // 2022-03-07T09:33:35.163
  5. System.out.println(localDateTime.getYear());
  6. System.out.println(localDateTime.getMonth()); // MARCH
  7. System.out.println(localDateTime.getMonthValue()); // 3
  8. System.out.println(localDateTime.getHour());
  9. System.out.println(localDateTime.getMinute());
  10. System.out.println(localDateTime.getSecond());
  11. LocalDate localDate = LocalDate.now(); // 2022-03-07
  12. LocalTime localTime = LocalTime.now(); // 09:38:41.106
  13. // 使用DateTimeFormatter对象进行格式化
  14. DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH小时mm分钟ss秒");
  15. String format = dateTimeFormatter.format(localDateTime);
  16. System.out.println(format); // 2022年03月07日 09小时48分钟09秒
  17. // Instant时间戳
  18. // 通过静态方法 now()获取表示当前时间戳的对象
  19. Instant now = Instant.now();
  20. System.out.println(now); // 2022-03-07T01:50:54.388Z
  21. // 通过from把Instant转换成Date
  22. Date date = Date.from(now);
  23. // 通过date的toInstant()把date转成Instant对象
  24. Instant instant = date.toInstant();
  25. // plus和minus方法对当前时间进行加或者减
  26. LocalDateTime localDateTime1 = localDateTime.plusDays(890);
  27. // 890天后是
  28. System.out.println("890天后是"+dateTimeFormatter.format(localDateTime1)); // 890天后是2024年08月13日 10小时00分钟50秒
  29. }
  30. }