java日期相关转换与比较

java日期相关转换

  1. String转换成Date
    需要注意一下小时制,SimpleDateFormat对象的parse()需要捕获异常
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String dateStr="2020-01-01 23:59:59";
Date retDate = sdf.parse(dateStr);
Date retDate1 = sdf1.parse(dateStr);
System.out.println("24小时制:"+sdf.format(retDate));
System.out.println("12小时制:"+sdf1.format(retDate1));

运行结果:
24小时制:2020-01-01 23:59:59
12小时制:2020-01-01 11:59:59
2. Date转换成固定格式的String

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(new Date()));

运行结果:
2021-03-18 20:48:39

java日期比较

  1. Date的before() after()函数
public static void main(String[] args) throws ParseException {
        String dateStr="2020-01-01 23:59:59";
        String dateStr2="2020-01-02 23:59:59";
        //转换日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = sdf.parse(dateStr);
        Date date2 = sdf.parse(dateStr2);
        //日期的比较
        System.out.println("date2是否在date后面:"+date2.after(date));
        System.out.println("date是否在date2前面:"+date.before(date2));
    }

运行结果:
date2是否在date后面:true
date是否在date2前面:true
2. 用String的compareTo()

String dateStr="2020-01-01 23:59:59";
String dateStr2="2020-01-02 23:59:59";
Integer i=dateStr.compareTo(dateStr2);
System.out.println(i);

返回正值是代表左侧日期大于参数日期,反之亦然,日期格式必须一致

java日期相关转换 及比较(JDK 1.8才支持)

public static void main(String[] args) {
        //LocalDate是不可变的和线程安全的,没有带时分秒的,如果处理带时分秒的时间可以用LocalDateTime这个类
        //设定日期打印格式
        DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        //字符串转日期
        LocalDateTime parse = LocalDateTime.parse("2020-02-29 12:00:00",dtf);
        //获取现在的日期
        LocalDate now = LocalDate.now();
        LocalDateTime now2 = LocalDateTime.now();
        //计算365天之后的日期
        LocalDate localDate = now.plusDays(365);
        //计算365天之前的日期
        LocalDate localDate2 = now.minusDays(365);
        //按格式输出
        System.out.println(dtf.format(now2));
        //判断哪个日期在前(比较的类型需要一致),这里判定的是parse是否比now2要早
        System.out.println(parse.isBefore(now2));
    }
    //今年是否闰年
        System.out.println(now.isLeapYear());
        System.out.println(LocalDate.parse("2020-01-01").isLeapYear());
    ```
    运行结果:
2021-03-19 17:08:05
true
false
true

工具类可参考:
链接: [link](https://thinkwon.blog.csdn.net/article/details/111116600?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-1.control&dist_request_id=1328679.9207.16161346563508699&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1.control).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值