java日期时间类 Date和SimpleDateFormat

Date类

概述

Date类的对象在Java中代表的是当前所在系统的此刻日期时间,说白了就是你计算机上现实的时间。

基本用法

1,直接输出当前日期:

public class Test {
    public static void main(String[] args){
        Date d = new Date();
        System.out.println(d);
    }
}

结果:Tue Oct 18 19:12:33 CST 2022

2,获取时间毫秒值,这里说明一下是从1970年1月1日00:00到现在的毫秒数。嗯?要毫秒值干什么?计算天数!因为java没有直接提供天数的计算方法,所以你只能用毫秒数来计算。

public class Test {
    public static void main(String[] args){
//        Date d = new Date();
//        System.out.println(d);

        long time = d.getTime();
        System.out.println(time);
    }
}

结果:1666092116318

练习:当前时间加上 1小时121秒 之后的时间是多少。这里有个知识点,把毫秒类型的数据当参数传进去会自动转成日期类型的数据。

public class Test {
    public static void main(String[] args) {
        Date d = new Date();
        System.out.println(d);
        long time = d.getTime();
        time += (60 * 60 + 121) * 1000;
        Date d2 = new Date(time);
        System.out.println(d2);
    }
}

结果:Tue Oct 18 19:30:31 CST 2022
           Tue Oct 18 20:32:32 CST 2022


SimpleDateFormat类

概念

就是简单日期格式化类。上面讲的Date类输出的日期格式是不是过于复杂且不符合我们日常使用的规范?所以出现了SimpleDateFormat类,使日期输出更简洁。

用法

和这里要讲的就是构造器里的参数形式:

SimpleDateFormat 对象名 = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");

这一行代码确立了转换的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。注意:有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制。我们还可以输出周几,上午下午,只需在后面加上 "EEE a" 即可。

public class Test {
    public static void main(String[] args) {
        Date d = new Date();
        SimpleDateFormat s = new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss  EEE a");
        String r = s.format(d);
        System.out.println(r);
    }
}

结果:2022年10月18日  19:54:47  星期二 下午

案例:给定某个时间,输出经过多少时间之后的时间。

首先你得到的是字符串形式的时间格式,我们要先解析成日期格式,例如毫秒值或者日期对象。需要先转成标准日期格式,再调用parse方法改成毫秒。这里有一点要说明,你给出的时间的格式要符合java里的日期格式是吧,比如你给的时间是2022年,你不能只写个22。还有一点,我们要改的时间毫秒数可能很大马,所以最好转成long类型进行计算。

public class Test {
    public static void main(String[] args) throws ParseException {
        String dateStr = "2021-08-06  11:11:11";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
        Date d = sdf.parse(dateStr);

        long time = d.getTime() + (2L * 24 * 60 * 60 + 14 * 60 * 60 + 49 * 60 + 6) * 1000;
        System.out.println(sdf.format(time));
    }
}

结果:2021-08-09  02:00:17

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值