Java日期工具类

Date类

  1、概述
   类Date表示特定的瞬间,精确到毫秒
  2、构造方法
   public Date() //分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
   public Date(long date) //分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

		Date date = new Date();
        System.out.println(date.toString());  //现在的日期
        Date date1 = new Date(1000 * 60 * 60*24);
        System.out.println(date1);            //1970 年 1 月 1 日 00:00:00一天后的日期

  3、成员方法
  public long getTime(): 获取一个日期对象对象毫秒值
  public void setTime(long time): 给一个日期对象设置上指定的毫秒值

		Date date = new Date();
        long time = date.getTime();
        System.out.println(time);//计算机元年到现在过的毫秒值
        Date date1 = new Date();
        date1.setTime(1000 * 24 * 3600);

SimpleDateFormat类

  1、概述
   可以把一个日期对象格式化成一个字符串,也可以把一个日期字符串解析成一个日期对象。
  2、构造方法
  public SimpleDateFormat():使用默认的模式来创建一个SimpleDateFormat对象
  public SimpleDateFormat(String pattern):使用指定的模式(规则比如yyyy:MM:dd HH:mm:ss)来创建一个SimpleDateFormat对象
  规则定义
  y:年,M:月,d:天,H:时,m:分,s:秒
  3、成员方法
  public String format(Date date): 把一个日期对象格式化成一个字符串
   public Date parse(String dateStr): 把一个日期字符串解析成一个日期对象,注意要以指定格式解析

        Date date = new Date();
        SimpleDateFormat sim = new SimpleDateFormat();
        String format = sim.format(date);
        System.out.println(format);
        SimpleDateFormat sim2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:s");
        String format1 = sim2.format(date);
        System.out.println(format1);
 输出:
19-5-5 下午5:02
2019-05-05 05:02:29

  写一个简单的例子,灵活使用一下这个方法,测一下2000年的五月五日到现在过了多少天。
  思路:输入日期为2000年5月5日的字符串,将之解析成一个日期对象,获取它对应的毫秒值,再获取当前时间的毫秒值,差值换算成天数。

		String str = "2000-05-05";
        SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sim.parse(str);
        long time = date.getTime();
        Date date1 = new Date(); //此时日期为2019年5月5日
        long time1 = date1.getTime();
        System.out.println((time1-time)/1000/3600/24);

Calendar类

  1、概述
  Calendar 类是一个抽象类,不能直接new对象,可以通过他的一个静态成员方法getInstance()来获取他的对象。它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
  2、成员方法
  public static Calendar getInstance() 使用默认时区和语言环境获得一个日历对象
  public int get(int field) 获得给定日历字段对应的值 field通过Calendar提供的字

		Calendar instance = Calendar.getInstance();
        int year = instance.get(Calendar.YEAR);
        int month = instance.get(Calendar.MONTH);
        int day = instance.get(Calendar.DAY_OF_MONTH);
        int hour = instance.get(Calendar.HOUR_OF_DAY);
        int minute = instance.get(Calendar.MINUTE);
        int second = instance.get(Calendar.SECOND);
        System.out.println(year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second);
 输出:
 2019-4-5 17:19:37   //月份是0-11,也就是说4代表5月

  public void add(int field,int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量

		Calendar instance = Calendar.getInstance();
        instance.add(Calendar.YEAR,1);
        instance.add(Calendar.MONTH,5);
        instance.add(Calendar.DAY_OF_MONTH,-4);
        int year = instance.get(Calendar.YEAR);
        int month = instance.get(Calendar.MONTH);
        int day = instance.get(Calendar.DAY_OF_MONTH);
        System.out.println(year+"-"+month+"-"+day);
输出:2020-9-1

  public final void set(int year,int month,int date) 设置日历时间 年月日

		public static void main(String[] args) throws ParseException {
        Calendar instance = Calendar.getInstance();
        instance.set(Calendar.YEAR,2016);
        instance.set(Calendar.MONTH,10);
        int year = instance.get(Calendar.YEAR);
        int month = instance.get(Calendar.MONTH);
        System.out.println(year+"-"+month);
    }
输出:2016-10

  现在做一个小测试,键盘录入任意一个年份,获取任意一年的二月有多少天
  思路:创建Calendar对象,日期录入为三月一号,注意2表示三月,先前推算一天,输入月中的天数。

		public static void main(String[] args) throws ParseException {
        Scanner sc = new Scanner(System.in);
        System.out.print("输入年份:");
        int year = sc.nextInt();
        Calendar instance = Calendar.getInstance();
        instance.set(year,2,1);
        instance.add(Calendar.DAY_OF_MONTH,-1);
        int day = instance.get(Calendar.DAY_OF_MONTH);
        System.out.println(year+"年的二月有"+day+"天");
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值