java学习日记20230409-日期类

日期类

第一代日期类

public class Date01 {
    public static void main(String[] args) {
        //默认输出国外的方式,通常需要转化
        Date date = new Date();
        System.out.println(date);
        Date date1 = new Date(1232131321);
        System.out.println(date1);
        //转化
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
        simpleDateFormat.format(date);
        System.out.println(simpleDateFormat.format(date));
        //可以把格式化的String转化为对应Date
        String s= "1996-08-21 10:20:30";
        try {
            Date parse = simpleDateFormat.parse(s);
            SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            System.out.println(simpleDateFormat1.format(parse));
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }

    }
}

2.第二代工具类

  • 第二代日期类,主要就是Calendar类,该类是一个抽象类,他为特定瞬间与一组诸如YEAR,MONTH,DAY_OF_MONTH,HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(获得下星期的日期)提供了一些方法
  • public class Calendar01 {
        public static void main(String[] args) {
            //Calendar是一个抽象类,并且构造器非公共的
            //通过getInstance获取实例
            Calendar calendar = Calendar.getInstance();
            System.out.println(calendar);
            //Calendar返回月时是按照0开始编号
            //Calendar需要程序员自己组合日期
            System.out.println(calendar.get(Calendar.YEAR));
            //24进制
            System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
        }
    }

    3.第三代日期类:

    前两代日期类的不足分析

    jdk1.0包含了一个java.util.Date类,但是它的大多数方法已经在JDK1.1引入Calendar类之后就被弃用了,而Calendar也存在问题:

    • 可变性:像日期和时间这样的类应该是不可变的;
    • 偏移性:Date中的年份是从1900开始的,而月份都是从0开始的
    • 格式化:格式化只对Date有用,Calendar则不行
    • 此外,他们也不是线程安全的,不能处理闰秒(每隔两天多出1s)
  • jdk8第三代日期类:
    • LcalDate:年月日
    • LocalTime:时分秒
    • LocalDateTime:年月日 时分秒
    • public class LocalDate01 {
          public static void main(String[] args) {
              //第三代日期类
              LocalDateTime localDateTime = LocalDateTime.now();
              System.out.println(localDateTime);
              System.out.println(localDateTime.getYear());
              System.out.println(localDateTime.getMonth());
              System.out.println(localDateTime.getMonthValue());
              System.out.println(localDateTime.getHour());
              System.out.println(localDateTime.getMinute());
              System.out.println(localDateTime.getSecond());
      
              //DateTimeFormatter格式化
              DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
              String date = dateTimeFormatter.format(localDateTime);
              System.out.println(date);
              //Instant时间戳
              //类似Date提供了一系列和Date类转换的方式
              //Instant-Date:Date.from(instant);
              //Date-Instant:date.toINstant();
              Instant instant = Instant.now();
              System.out.println(instant);
              Date date1 = Date.from(instant);
              Instant instant1 = date1.toInstant();
              System.out.println(instant1);
              System.out.println(SimpleDateFormat.getDateTimeInstance().format(date1));
      
              //plus和minus方法
              System.out.println(dateTimeFormatter.format(localDateTime.plusDays(890)));
              System.out.println(dateTimeFormatter.format(localDateTime.minusDays(890)));
              Duration duration = Duration.between(localDateTime.plusDays(890),localDateTime.minusDays(890));
              long days = duration.toDays(); //相差的天数
              long hours = duration.toHours();//相差的小时数
              long minutes = duration.toMinutes();//相差的分钟数
              System.out.println("相差:"+days+"天:"+hours+" 小时:"+minutes+" 分钟");
          }
      }

       

posted @   、子夜  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示