Java中的日期时间类总结更新至JDK8

本文介绍Java中日期时间类的使用,包括Date、Calendar与SimpleDateFormat等,并通过实例演示如何进行日期格式化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文不涉及到java.sql中的日期时间类型,具体对应关系可以从 查看数据库连接问题 一般可以查到你想要的

下面进入正题Java中的日期时间类:

获取时间的方式有java.util.Date,java.util.Calendar;常见的两种,因为我们需要看到多种格式,或者说规范化;

因此有了SimpleDateFormat,他是DateFormat的一个实现类,可以这么说吧?

举个栗子:
1.Date的使用

        Date date = new Date();
        System.out.println(date);

//out:Fri Jan 19 14:00:48 CST 2018
//输出看不懂啊,怎么办?

        Date date = new Date();
        System.out.println(date);
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒SSS毫秒");
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分");
        SimpleDateFormat sdf4 = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
        System.out.println("转换之前的日期:"+sdf1.format(date));
        System.out.println("转换之后的日期:"+sdf2.format(date));
        System.out.println("转换之后的日期:"+sdf3.format(date));
        System.out.println("转换之后的日期:"+sdf4.format(date));
//Fri Jan 19 14:06:03 CST 2018
//转换之前的日期:2018-01-19 02:06:03.628
//转换之后的日期:2018年01月19日 02时06分03秒628毫秒
//转换之后的日期:2018年01月19日 02时06分
//转换之后的日期:18/01/19 14:06:03

2.Calendar
①Date代表一个时间点,其值为距公元1970年1月1日 00:00:00的毫秒数。所以它是没有时区和Locale概念的
②由于 Date 类不便于实现国际化,所以JDK1.1之后推荐使用Calendar

Calendar本身是一个抽象类,但它提供了很多静态方法让我们使用很方便。
Calendar的常见使用:Calendar
Calendar在实际使用过程中需要很多注意事项:
1.月份从0开始 public final static int JANUARY = 0;  
2.获取天数是从1开始
3.时间滚动只在一年内
4.星期一(MONDAY) 对应的值为2
5.set设置时间会向前进位问题 

 Calendar calendar=Calendar.getInstance();
        calendar.roll(Calendar.MONTH, -3);
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒SSS毫秒");
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分");
        SimpleDateFormat sdf4 = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
        System.out.println("转换之前的日期:"+sdf1.format(calendar.getTime()));
        System.out.println("转换之后的日期:"+sdf2.format(calendar.getTime()));
        System.out.println("转换之后的日期:"+sdf3.format(calendar.getTime()));
        System.out.println("转换之后的日期:"+sdf4.format(calendar.getTime()));
//转换之前的日期:2018-10-19 02:20:57.195
//转换之后的日期:20181019022057195毫秒
//转换之后的日期:201810190220分
//转换之后的日期:18/10/19 14:20:57
 Calendar cal = Calendar.getInstance();
        cal.set(2003, 7 , 31);
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分");
        //将月份设为9,系统会把cal自动调整到101日
        //如果立即修改,系统将会把cal改为101日
        cal.set(Calendar.MONTH, 8);
        //下面代码输出101日
        System.out.println(sdf3.format(cal.getTime()));//①
        //设置DATE字段为5
        cal.set(Calendar.DATE, 5);//②
        System.out.println(sdf3.format(cal.getTime()));//③

因为Dateformat的非线程安全,Java已经意识到需要为时间及日期功能提供更好的支持了因此对吧!
那么JDK8又提供了哪些方法便于时间日期的操作呢?

JDK8 20个时间日期使用案例:时间使用案例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值