Java日期时间类

1.Date 日期
public class Main {
    public static void main(String[] args) {
        //1.获取当前日期时间
        Date date1 = new Date();
        System.out.println(date1);
        //2.获取指定时间,参数为从1970年7月1日00:00:00.0000开始计算的毫秒值
        Date date2 = new Date(1000);
        System.out.println(date2);
        //3.从1970年7月1日00:00:00.0000到date对象的毫秒数
        long l1 = date1.getTime();
        long l2 =date2.getTime();
        System.out.println(l1);
        System.out.println(l2);
        //获取当前时间的毫秒值常用System.currentTimeMillis(),这个方法可以调试代码运行速度
        long start = System.currentTimeMillis();
        //{代码块}
        long end = System.currentTimeMillis();
        System.out.println(end -start);
    }
}

2.SimpleDateFormat 格式日期
public class Main {
    public static void main(String[] args) throws ParseException {
        //指定日期格式,yyyy是年,MM是月份,dd是日, hh是小时(12小时制),HH是小时(24小时制),mm是分钟,ss是秒,SSS是毫秒
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");

        //通过SimpleDateFormat对象的format方法传入一个日期对象,返回值类型是String,完成了日期转成字符串
        String str = sdf.format(new Date());
        System.out.println(str);

        //通过SimpleDateFormat对象的parse方法传入一个字符串,返回值类型是date,完成了字符串转日期
        Date date = sdf.parse("2022-12-09 16:44:20.123");
        System.out.println(date);
    }
}

3.Calendar 更灵活的日期时间类
public class Main {
    public static void main(String[] args) throws ParseException {
        //创建对象,默认插入的是当前的时间,因为Calendar是抽象类,实际上创建的是GregorianCalendar对象
        Calendar c = Calendar.getInstance();

        //将Calendar对象转为Date对象
        Date date= c.getTime();
        //将Date对象的具体时间值注入到Calendar对象中
        c.setTime(date);

        //设置年月日时分秒,对象不变依旧是c
        c.set(1994,9,10,4,55,26);

        //单独设置 某一项属性
        // 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    星期几
        c.set(Calendar.YEAR,1995);

        //获得某一项属性
        int year = c.get(Calendar.YEAR);

        //某一项属性进行增减
        c.add(Calendar.YEAR,-1);
    }
}

4.jdk1.8的新日期时间类
4.1 Localdate 
public class Main {
    public static void main(String[] args) throws ParseException {
        //获取当前日期
        LocalDate ld1= LocalDate.now();

        //获取指定日期
        LocalDate ld2= LocalDate.of(1994,9,10);

        //获取年份
        int year = ld1.getYear();

        //获取月份,getMonth()返回值是Month类型,getMonthValue()方法返回的是short类型
        int month = ld1.getMonthValue();

        //获取月份中的第几天
        int day1 = ld1.getDayOfMonth();

        //获取年份中的第几天
        int day2 = ld1.getDayOfMonth();

        //获取星期
        int week = ld1.getDayOfWeek().getValue();

        //更改日期,返回的是一个新的LocalDate对象,ld1不变
        LocalDate ld3 = ld1.withYear(1995);

        //年份增加
        LocalDate ld4 = ld1.plusYears(1995);

        //年份减少
        LocalDate ld5 = ld1.minusYears(1995);
    }
}

4.2 Localdatetime ->在Localdate基础上增加了时间,关于日期部分的使用和Localdate相同
public class Main {
    public static void main(String[] args) throws ParseException {
        //获取当前日期
        LocalDateTime ldt1= LocalDateTime.now();
        System.out.println(ldt1);

        //获取指定日期
        LocalDateTime ldt2= LocalDateTime.of(1994,9,10,10,0,0);

        //获取年份
        int year = ldt1.getYear();

        //获取月份,getMonth()返回值是Month类型,getMonthValue()方法返回的是short类型
        int month = ldt1.getMonthValue();

        //获取月份中的第几天
        int day1 = ldt1.getDayOfMonth();

        //获取年份中的第几天
        int day2 = ldt1.getDayOfMonth();

        //获取星期
        int week = ldt1.getDayOfWeek().getValue();

        //获取小时
        int hour = ldt1.getHour();

        //获取分钟
        int minute = ldt1.getMinute();

        //获取秒数
        int second = ldt1.getSecond();

        //更改时间,返回的是一个新的LocalDateTime对象,ldt1不变
        LocalDateTime ldt3 = ldt1.withHour(23);
        System.out.println(ldt3);

        //小时增加,23加2 之后 天数+1 小时变成1点
        LocalDateTime ldt4 = ldt3.plusHours(2);
        System.out.println(ldt4);

        //小时
        LocalDateTime ldt5 = ldt1.minusHours(1);
    }
}

4.3 指定格式日期时间DateTimeFormatter
public class Main {
    public static void main(String[] args) throws ParseException {
        //自定义格式
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mi:ss.sss");

        //生成LocalDateTime对象
        LocalDateTime ldt1 = LocalDateTime.now();

        //和LocalDateTime对象关联,返回字符串,完成日期按指定格式转成字符串
        String dateStr =dtf.format(ldt1);

        //和字符串关联返回时间日期对象,完成字符串按指定格式转日期
        LocalDateTime ldt2 = (LocalDateTime) dtf.parse(dateStr);
    }
}

5.计算日期间隔
public class Main {
    public static void main(String[] args) throws ParseException {
        //传统Date对象的计算方法
        Date start = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2022-12-11 14:46:00");
        Date end = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2022-12-12 14:46:00");

        long oneDayMillis = 1000*60*60*24;
        long days1 = (start.getTime() - end.getTime())/oneDayMillis;

        //jdk1.8之后
        LocalDateTime yesterDay = LocalDateTime.of(2022,12,11,14,46);
        LocalDateTime today = LocalDateTime.of(2022,12,12,14,46);

        //生成时间间隔对象
        Duration d = Duration.between(yesterDay,today);

        //返回相差天数,类型是long,类似的方法还有toMillis() ->返回相差毫秒值 toHours()->返回相差小时数 toMinutes() ->返回相差分钟数
        long days2=d.toDays();
        d.toMillis();
        d.toHours();
        d.toMinutes();

        //返回相差秒数用getSecond()
        d.getSeconds();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值