Java日期时间常见操作

一、Date

  • 创建日期对象
    1)指定时间创建日期对象
    Date d = new Date(123456789);
    System.out.println(d);

    运行结果:

    2)创建当前时间的日期对象

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

    其效果等同于:

    Date d = new Date(System.currentTimeMillis());
    System.out.println(d);

    运行结果:

  • 获取时间的毫秒值

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

    运行结果:

  • 设置时间
    可以通过上述构造方法设置,这里我们通过setTime()方法设置

    Date d = new Date();
    d.setTime(1554902134466L);
    System.out.println(d);

    运行结果:

二、SimpleDateFormat

上述Date输出的结果确实能表示时间,但是这个时间不符合我们平时使用时间的格式,所以我们可以使用SimpleDateFormat来指定时间的格式,更有利于国际化

日期模式字符:

这里只列出常用的模式字母
年 y
月 M	
日 d
时 H
分 m
秒 s
  • 日期 ---> 字符串
    Date d = new Date();
    SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    String timeStr = format.format(d);
    System.out.println(timeStr);

    运行结果:

  • 字符串 ---> 日期

    String timeStr ="2019年04月10日 21:31:10";
    SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    Date date = format.parse(timeStr);
    System.out.println(date);

    运行结果:

三、Calendar

Calendar为我们操控日历提供了非常方便的方法,下面我们挑选一些常用的进行演示

  • 获取年月日(get)
    // 获取日历实例
    Calendar calendar = Calendar.getInstance();
    		
    // 获取年
    int year = calendar.get(Calendar.YEAR);
    // 获取月
    int month = calendar.get(Calendar.MONTH);
    // 获取日(月份中的天)
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println(year+"年"+(month+1)+"月"+day+"日");

    运行结果:

    注意:获取日期中的字段是要用的是get方法,其中参数均为int类型,Calendar类的字段已经在类中封装好了。获取月份的时候,月份是从 0 开始的,所以若要显示出我们平时使用的月份,需要将获取的月份进行加 1

  • 修改日历(add)
    获取三年前的今天:

    // 获取日历实例
    Calendar calendar = Calendar.getInstance();
    
    // 获取年
    int year = calendar.get(Calendar.YEAR);
    // 获取月
    int month = calendar.get(Calendar.MONTH);
    // 获取日(月份中的天)
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println(year + "年" + (month + 1) + "月" + day + "日");
    
    // 年份 -3
    calendar.add(Calendar.YEAR, -3);
    // 获取年
    year = calendar.get(Calendar.YEAR);
    // 获取月
    month = calendar.get(Calendar.MONTH);
    // 获取日(月份中的天)
    day = calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println(year + "年" + (month + 1) + "月" + day + "日");

    运行结果:

    获取十年后的两个月前的十天后:

    // 获取日历实例
    Calendar calendar = Calendar.getInstance();
    
    // 获取年
    int year = calendar.get(Calendar.YEAR);
    // 获取月
    int month = calendar.get(Calendar.MONTH);
    // 获取日(月份中的天)
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println(year + "年" + (month + 1) + "月" + day + "日");
    
    // 年份 +10
    calendar.add(Calendar.YEAR, +10);
    // 月份 -2
    calendar.add(Calendar.MONTH, -2);
    // 天 +10
    calendar.add(Calendar.DAY_OF_MONTH, +10);
    
    // 获取年
    year = calendar.get(Calendar.YEAR);
    // 获取月
    month = calendar.get(Calendar.MONTH);
    // 获取日(月份中的天)
    day = calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println(year + "年" + (month + 1) + "月" + day + "日");

    运行结果:

  • 设置日期(set)

    // 获取日历实例
    Calendar calendar = Calendar.getInstance();
    
    // 设置日历
    calendar.set(2020, 3, 1);
    
    // 获取年
    int year = calendar.get(Calendar.YEAR);
    // 获取月
    int month = calendar.get(Calendar.MONTH);
    // 获取日(月份中的天)
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println(year + "年" + (month + 1) + "月" + day + "日");

    运行结果:

  • 获取任意一年中的二月有多少天
    我们可以用通过判断闰年来解决,这里不做演示。此处只演示使用Calendar来解决,会比判断闰年的方式更加简单
    想要得到任意一年中的二月有多少天,我们可以这么思考。先得到这一年中的3月1日,然后向上推一天,然后获取月中的天即可。
    注意:设置3月1日时,月份应为2,而不是3

    // 获取日历实例
    Calendar calendar = Calendar.getInstance();
    // 设置年份
    int year = 2019;
    // 设置日历为3月1日,注意:3月为数字2,而不是3
    calendar.set(year, 2, 1);
    // 3月1日向前推一天
    calendar.add(Calendar.DAY_OF_MONTH, -1);
    // 获取二月最后一天
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println(year + "年二月有" + day + "天");

    运行结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值