日期转换与时间获取,日期注解

  • 个人开发中常用日期转换以及方法、注解汇总

- hutool工具

  • 依赖:
 <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.0</version>
        </dependency>
  • 常用时间获取
//当前时间
        System.out.println("hutool 当前时间:"+DateUtil.now());
        //今天开始时间
        System.out.println("hutool 今天开始时间"+DateUtil.beginOfDay(new Date()));
        //今天结束时间
        System.out.println("hutool 今天结束时间"+DateUtil.endOfDay(new Date()));
        //昨天开始时间
        System.out.println("hutool 昨天开始时间"+DateUtil.beginOfDay(DateUtil.yesterday()).toJdkDate());
        //昨天结束时间
        System.out.println("hutool 昨天开始时间"+ DateUtil.endOfDay(DateUtil.yesterday()).toJdkDate());
        //本周开始时间
        System.out.println("hutool 本周开始时间"+DateUtil.beginOfWeek(new Date()));
        //本周结束时间
        System.out.println("hutool 本周结束时间"+DateUtil.endOfWeek(new Date()));
        // 昨天开始到结束 之间的分钟数
        long between = DateUtil.between(DateUtil.beginOfDay(DateUtil.yesterday()).toJdkDate(), DateUtil.endOfDay(DateUtil.yesterday()).toJdkDate(), DateUnit.MINUTE);
        System.out.println("昨天开始到结束 之间的分钟数"+between);
  • 运行结果:

在这里插入图片描述

String,Date,DateTime互转

        String date = "2023-05-12 17:36:00";
        //String 转Date
        Date date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);
        //String 转dateTime
        DateTime dateTime = DateTime.of(date1);


        Date date2 = new Date();
        //Date 转 String
        String fmdate2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date2);
        //Date转DateTime
        DateTime dateTime1 = new DateTime(date2.getTime());

        DateTime date3 = new DateTime();
        //DateTime转Date
        Date date4 = date3.toJdkDate();
        //DateTime转String
        String dateTimefm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date3);

运行结果:
在这里插入图片描述

数据库: Mysql ,date与DateTime区别

  • 数据库日期类型 : 不能为空,想存空值可以用字符串类型
  • 如果时间需要 精确到 时分秒,可以选择Datetime
  • 区别:
  • Date类型Date类型

Date类型显示

  • dateTime类型
    -dateTime类型

dateTime类型

注解-转载

  • 依赖
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.6</version>
</dependency>
  • 注解@JsonFormat主要是后台到前台的时间格式的转换
  • 注解@DataFormAT主要是前台到后台的时间格式的转换
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")

mybatis查询Oracle数据库中Date类型自动转化为时间戳

@JSONField(format ="yyyy-MM-dd HH:mm:ss")
private Date gmtModified;
  • 存储在MYSQL中的数据是dateTime类型,将数据获取以后封装到实体类中的时候,就会变成英文的时间格式(Wed Jul 27 02:26:43 CST 2022),而不是yyyy-MM-dd HH:mm:ss格式的时间(2022-07-27 02:26:43),@JsonFormat注解就可以解决这个问题。
  • @DateTimeFormat 直接接收指定的时间格式,既灵活又方便。

时间类常用方法

  • date的before ,after判断早于或晚
        String date = "2023-05-12 17:36:00";
        String datefm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        //String 转Date
        Date date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);
        boolean before = date1.before(new Date());
        boolean after = date1.after(new Date());
        System.out.println("====================");
        System.out.println("当前时间:"+datefm);
        System.out.println("date日期早于当前时间:" + before);
        System.out.println("date日期晚于当前时间:" + after);
  • 运行结果:
    在这里插入图片描述
  • 判断两个日期间隔
        String date = "2023-05-12 17:36:00";
        //String 转Date
        Date date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);

        long SecondBetween = DateUtil.between(date1,new Date(), DateUnit.SECOND);
        long MinuteBetween = DateUtil.between(date1,new Date(), DateUnit.MINUTE);
        long HourBetween = DateUtil.between(date1,new Date(), DateUnit.HOUR);
        long DayBetween = DateUtil.between(date1,new Date(), DateUnit.DAY);
        long WeekBetween = DateUtil.between(date1,new Date(), DateUnit.WEEK);

        System.out.println("两个时间间隔 秒 :" + SecondBetween);
        System.out.println("两个时间间隔 分 :" + MinuteBetween);
        System.out.println("两个时间间隔 时 :" + HourBetween);
        System.out.println("两个时间间隔 天 :" + DayBetween);
        System.out.println("两个时间间隔 周 :" + WeekBetween);
  • 运行结果:
    时间间隔运行结果
  • 获取今天的某个开始的小时(把 day修改就可以获取任意时刻):
 /**
     * 获取当天 某个 小时
     */
    public static Date getSomeHour(Integer hour,Integer minue,Integer second){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.set(Calendar.HOUR_OF_DAY, hour);
        calendar.set(Calendar.MINUTE, minue);
        calendar.set(Calendar.SECOND, second);
        calendar.set(Calendar.MILLISECOND, 999);
        return calendar.getTime();
    }

    public static void main(String[] args) {
       Date someHour = DateUtils.getSomeHour(15, 0, 0);
        System.out.println("==================");
        String datefm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(someHour);
        System.out.println("获取今天的 15点 :" + datefm);
    }

运行结果:
在这里插入图片描述

  • 获取某个时间是星期几
	   DateTime startTime = DateUtil.parse("2023-05-21 15:00:00","yyyy-MM-dd HH:mm:ss");
        int week = DateUtil.dayOfWeek(startTime);
        String[] weekStr={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
        String holiday = weekStr[week - 1];
        log.info("当前日期:"+holiday);
  • 运行结果
    在这里插入图片描述
  • 分享完毕
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值