Date类、DateFormat类、Calendar类

表示日期和时间的类

毫秒:千分之一秒 1000毫秒=1秒

毫秒值可以对时间和日期进行计算

时间原点:1970年1月1日00:00:00为0毫秒  中国属于东八区 会把时间+8小时   所以就为1970年1月1日00:08:00

空参的构造方法

Data();获取当前系统时间

有参的构造方法

Data(Long date);传递毫秒值,将毫秒值转换为对应的日期

public long getTime();获取当前系统的毫秒值(相当于currentTimeMillis()方法)

public class Demo02Date {
    public static void main(String[] args) {
        Date date = new Date();     //Date空参数构造方法
        System.out.println(date);   //说明重写了toString       Wed Nov 06 22:05:35 CST 2019
        long l=  date.getTime();   //获取当前系统的毫秒值  相当于currentTimeMillis()方法
        System.out.println(l);     //1573049263536
        Date date1 = new Date(0);   //将毫秒值转化为日期时间
        System.out.println(date1);  //Thu Jan 01 08:00:00 CST 1970
    }
}

DateFormat类

java.text.DateFormat:是日期/时间格式化子类的抽象类

作用:格式化(也就是日期 —> 文本)、解析(文本 —> 日期)

成员方法:

  • String format(Date date);  按照指定的模式,把Date日期,按照指定的模式格式化为指定的字符串
  • Date parse(String soutce);  把符合模式的字符串,解析为date日期

DateFormat是抽象类,我们可以使用它的子类SimpleDateFormat

SimpleDateFormat类

构造方法

  • SimpleDateFormat(String pattern); 用指定的模式和默认语言环境的日期格式符号构造SimpleDateFormat
  • 参数 :  String pattern:传递指定的模式       y:年 、M:月 、d:日 、H:时 、m:分 、s:秒
  • 例如"yyyy-MM-dd HH:mm:ss"     "yyyy年MM月dd日 HH时mm分ss秒"
public class Demo03DateFormat {
    public static void main(String[] args) throws ParseException {
        Date date = new Date();
       SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
       String str = simpleDateFormat.format(date);
       System.out.println(str); //2019年11月06日 22时33分46秒
       Date date1 = simpleDateFormat.parse(str);        //该方法会抛出异常
       System.out.println(date1);//Wed Nov 06 22:33:46 CST 2019
    }
}

Calendar类

java.util.Calendar:日历类,在Date后出现,替换掉了许多Date的方法,该类将所有有可能用到的是时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。

Calendar类是抽象类,里面提供了静态的getInstance()方法,该方法返回了Calendar类的子类对象。

  • public Calendar getInstance();返回Calendar子类对象。
  • public int get(int field)`:返回给定日历字段的值。
  • public void set(int field, int value)`:将给定的日历字段设置为给定值。
  • public abstract void add(int field, int amount)`:根据日历的规则,为给定的日历字段添加或减去指定的时间量。
  • public Date getTime()`:返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。

 

字段值含义
YEAR
MONTH月(从0开始,可以+1使用)
DAY_OF_MONTH月中的天(几号)
HOUR月中的天(几号)
HOUR_OF_DAY时(24小时制)
MINUTE
SECOND
SECOND 

1、public Calendar getInstance();返回Calendar子类对象。

public class Demo03DateFormat {
    public static void main(String[] args) throws ParseException {

        Calendar calendar = Calendar.getInstance();//获取Calendar的子类
        System.out.println(calendar);       //重写了toString方法
        //java.util.GregorianCalendar[time=1573051666123,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=10,WEEK_OF_YEAR=45,WEEK_OF_MONTH=2,DAY_OF_MONTH=6,DAY_OF_YEAR=310,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=10,HOUR_OF_DAY=22,MINUTE=47,SECOND=46,MILLISECOND=123,ZONE_OFFSET=28800000,DST_OFFSET=0]
    }
}

2、public int get(int field):返回给定日历字段的值。

public class Demo04Calendar {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) +1;
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(year+"年"+month+"月"+day+"日"); //  2019年11月6日
    }
}

3、public void set(int field, int value)`:将给定的日历字段设置为给定值。

public class Demo04Calendar {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        System.out.println(year+"年");   //2019年

        calendar.set(Calendar.YEAR,2020);
        int year1= calendar.get(Calendar.YEAR);
        System.out.println(year1+"年");  //2020年
    }
}

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

public class Demo04Calendar {
    public static void main(String[] args) {
       Calendar cal = Calendar.getInstance();
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH);
        int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
        System.out.println(year + "年" + month + "月" + dayOfMonth + "日"); // 2019年10月6日

        cal.add(Calendar.YEAR,1);       //年份+1
        cal.add(Calendar.MONTH,-1);     //月份-1
        int year1 = cal.get(Calendar.YEAR);
        int month1 = cal.get(Calendar.MONTH);
        int dayOfMonth1 = cal.get(Calendar.DAY_OF_MONTH);
        System.out.println(year1 + "年" + month1 + "月" + dayOfMonth1 + "日");  //2020年9月6日
    }
}

5、public Date getTime()`:返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。

public class Demo04Calendar {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        Date date  = calendar.getTime();
        System.out.println(date);    //Thu Nov 07 00:01:09 CST 2019
    }
}

注:

 西方星期的开始为周日,中国为周一。

在Calendar类中,月份的表示是以0-11代表1-12月

日期是有大小关系的,时间靠后,时间越大

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值