Date【类】&Calendar【类】

本文详细介绍Java中Date与Calendar类的使用方法,包括毫秒值与日期的相互转换、日期格式化、文本与日期的互转及计算出生天数等实用技巧。

Date【类】&Calendar【类】
在这里插入图片描述
一.Date类

  1. java.util包中,表示特定瞬间,精确到毫秒

  2. 毫秒值:1000毫秒=1秒
    毫秒值的作用:对时间和天数进行计算
    时间转换为毫秒 时间原点:1970年1月1日00:00:00(英国格林威治) 计算当前日期到时间原点一共经历了多少毫秒 注意:中国属于东八区,会把时间增加8个小时
    毫秒转化为日期 1天=24x60x60=86400秒=86400000毫秒
    System.currentTimeMillis(); //获取当前系统时间到1970年1月1日00:00:00经历了多少瞬间
    DateFormat:对日期进行格式化

  3. 抽象类,要使用SimpleDateFormat【类】
    构造方法 SimpleDateFormat(String pattern)
    String pattern 传递指定的模式
    区分大小写:y->年 M->月 d->日 H->时 m->分 s->秒 S->毫秒
    模式中的字母不能改变,连接模式的符号可以改变

    packagecn.com.abner.date;
    import java.util.Date;
    public class Demo {
    public void show() {
    Date d=new Date(1557462206838L); //将毫秒值转为日期 Fri May 10 12:23:26 CST 2019
    System.out.println(d);
    }
    public void show1() {
    Date s=new Date(); //当前系统时间 Fri May 10 17:55:54 CST 2019
    System.out.println(s);
    }
    public void show2() {
    Date d=new Date(); //当前系统时间到原点经历多少毫秒 1557482154891
    long time=d.getTime();
    System.out.println(time);
    }
    public static void main(String[] args) {
    System.out.println(System.currentTimeMillis()); //当前系统时间到原点经历多少毫秒 1557482154851
    Demo a=new Demo();
    a.show();
    a.show1();
    a.show2();
    }
    }

format方法:将指定日期转换为指定文本
1.//创建SimpleDateFormat(String pattern)对象
2.//调用SimpleDateFormat中的format方法将指定日期转换为指定文本

package cn.com.abner.date;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo1 {
    public static void main(String[] args) {
        show();
    }
    public static void show () {
        //创建SimpleDateFormat(String pattern)对象
        SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //调用SimpleDateFormat中的format方法将指定日期转换为指定文本
        Date d=new Date();
        String time=s.format(d);
        System.out.println(d);
        System.out.println(time);        
    }
}

parse方法:将文本转化为日期
1.//创建SimpleDateFormat(String pattern)对象
2.//调用SimpleDateFormat中的parse方法:将文本转化为日期
注意:会声明一个解析异常

package cn.com.abner.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo2 {
    public static void main(String[] args) throws ParseException {        //parse方法抛出异常
        show();
    }
    public static void show() throws ParseException {        //parse方法抛出异常
        //创建SimpleDateFormat(String pattern)对象
        SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //调用SimpleDateFormat中的parse方法:将文本转化为日期
        Date date=s.parse("2019-05-10 14:16:24");
        System.out.println(date);
    }
}
packagecn.com.abner.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/*

计算人出生了多少天
思路:1.输入出生日期
2.将日期转换为date值
3.将date格式转化为毫秒值
4.将当前毫秒值-出生毫秒值
5.将毫秒值转化为天
*/

public class Demo3 {
     public static void main(String[] args) throws ParseException {
          Scanner input=new Scanner(System.in);
          System.out.println("请输入姓名");
          String name=input.next();
          //1.输入出生日期
          System.out.println("请输入出生时间(格式为yyyy-MM-dd)");
          String SR=input.next();
          //2.将日期转换为date值
          SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd");
          Date date=s.parse(SR);
          //3.将date格式转化为毫秒值
          long time=date.getTime();
          //4.将当前毫秒值-出生毫秒值
          long SJ=System.currentTimeMillis()-time;
          //5.将毫秒值转化为天
          int day=(int) (SJ/1000/60/60/24);
          System.out.println(name+"出生了"+day+"天");
     }
}

二.Calendar【类】
java.util包中,日历类
抽象类,一个抽象方法getInstance();返回Calendar【类】子类对象 //获得一个日历
对象的方法
1.对象.get(Calendar.YEAR); //返回给定日历字段的值 参数:传递指定日历字段
2.对象.set(Calendar.YEAR, 9999); //给指定字段设置值 参数:传递指定日历字段 ,指定字段的值
3.对象.add(Calendar.YEAR, 1); //给指定字段的时间量增加/减少指定的值 参数:传递指定日历字段 正数增加,负数减少
4.Date date=c.getTime(); //把日历对象转换为日期对象

package cn.com.abner.calender;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Demo {
    public static void main(String[] args) {
        show1();
        System.out.println("----------------------------------------------------------");
        show2();
        System.out.println("----------------------------------------------------------");
        show3();
        System.out.println("----------------------------------------------------------");
        show4();
    }
    //获得指定字段的值        参数:传递指定日历字段
    public static void show1() {
        Calendar c=Calendar.getInstance();
        System.out.println(c);        //获得一个日历
        //java.util.GregorianCalendar[time=1557475009718,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=4,WEEK_OF_YEAR=19,WEEK_OF_MONTH=2,DAY_OF_MONTH=10,DAY_OF_YEAR=130,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=3,HOUR_OF_DAY=15,MINUTE=56,SECOND=49,MILLISECOND=718,ZONE_OFFSET=28800000,DST_OFFSET=0]
        
        int year=c.get(Calendar.YEAR);        //返回给定日历字段的值      参数:传递指定日历字段
        System.out.println(year);            //2019
        
        int month=c.get(Calendar.MONTH);        //返回给定日历字段的值
        System.out.println(month);            //4  西方从0~11
    }
    
    //给指定字段设置值          参数:传递指定日历字段 ,指定字段的值
    public static void show2() {
        Calendar c=Calendar.getInstance();
        //获得一个日历
        //设置年为:9999
        c.set(Calendar.YEAR, 9999);            //参数:传递指定日历字段 ,指定字段的值
        //同时设置年月日
        c.set(1994, 10, 23);
        int year=c.get(Calendar.YEAR);        //返回给定日历字段的值
        System.out.println(year);            //9999/1994
        
        int month=c.get(Calendar.MONTH);        //返回给定日历字段的值
        System.out.println(month);            //4  西方从0~11
        
    }
    //给指定字段的时间量增加/减少指定的值
    //参数:传递指定日历字段        正数增加,负数减少
    public static void show3() {
        Calendar c=Calendar.getInstance();
        //获得一个日历
        
        //给指定字段的时间量增加/减少指定的值
        c.add(Calendar.YEAR, 1);
        c.add(Calendar.MONTH, -1);
        
        int year=c.get(Calendar.YEAR);        //返回给定日历字段的值      参数:传递指定日历字段
        System.out.println(year);            //2020
        
        int month=c.get(Calendar.MONTH);        //返回给定日历字段的值
        System.out.println(month);            //3  西方从0~11
        
    }
    //把日历对象转换为日期对象
    public static void show4() {
        Calendar c=Calendar.getInstance();
        Date date=c.getTime();
        System.out.println(date);        //Fri May 10 17:11:21 CST 2019
        long time=date.getTime();
        System.out.println(time);        //1557479481373
        SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time1=s.format(time);    
        System.out.println(time1);        //2019-05-10 17:11:21
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Abner G

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值