MEC@JavaSE@基础篇@笔记11@日期类:Date,DateFormat;日历类:Calendar

一、Date类

为什么要使用Date类?

String date1 = "2020-10-18";
String date2 = "2020-10-28";
​
//date2 - date1 不行。
//所以我们要学习Date类。

Date 类表示特定的瞬间,精确到毫秒。

它允许把日期解释为年、月、日、时、分和秒值。

年:正常年份值

月: 0 至 11 整数表示;0 是一月、1 是二月等等;因此 11 是十二月。

日:1 至 31 表示。(一月中的某天)。

时:0至23

分:0至59

秒:0至59

周:0至6 0周日

毫秒值的概念和作用(了解-扩展)

1秒=1000毫秒
1 天 = 24 × 60 × 60 = 86400 秒 = 86400 * 1000 = 86400000毫秒
--------------------------------------------------------------
时间原点:0毫秒的时间点
    1970 年 1 月 1 日 00:00:00 英国格林威治的时间(世界标准时间)
中国:东八区 标准时间+8个小时的时差
    1970 年 1 月 1 日 08:00:00
把当前日期和时间转换为毫秒值:就是当前时间和时间原点的一个差值    
    当前时间(2020年8月10日 11:21:33)-时间原点(1970 年 1 月 1 日 00:00:00) = 1597029762998

Date类的构造方法和成员方法

构造方法摘要说明
Date()分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
Date(long date)1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
long getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

代码示例


import java.util.Date;
​
/*
    Date类:是一个日期类
​
    构造方法:
        Date();
        Date(long l);
​
     long getTime(); 得到1970-1-1 00:00:00 到当前系统时间的时间毫秒值
 */
public class TestDate {
    public static void main(String[] args) {
       method2();
    }
​
    /*
        long getTime(); 得到1970-1-1 00:00:00 到当前系统时间的时间毫秒值
     */
    private static void method3() {
        Date date = new Date();
        System.out.println(date.getTime());  //1602990270976
    }
​
    /*
        Date(long l); 有参构造 参数是毫秒值
        CST: 中国标准时间
     */
    public static void method2(){
        //创建Date日期对象
        Date date = new Date(1602990270976L);
        System.out.println(date); //Sun Oct 18 10:59:40 CST 2020
    }
​
    /*
        Date(); 无参构造
        CST: 中国标准时间
     */
    public static void method1(){
        //创建Date日期对象
        Date date = new Date();
        System.out.println(date); //Sun Oct 18 10:59:40 CST 2020
    }
}

二、DateFormat

1.DateFormat类介绍(了解)

DateFormat作用:

  • 格式化(也就是日期 -> 文本)

  • 解析(文本-> 日期)

方法说明
String format(Date date)参数传递Date日期,把日期格式化为符合模式的字符串
Date parse(String source)参数传递字符串,把符合模式的字符串解析为Date日期
DateFormat类本身还是一个抽象类,无法直接创建对象使用,需要使用DateFormat类的子类创建对象使用
java.text.SimpleDateFormat extends DateFormat类
SimpleDateFormat类的构造方法:
    SimpleDateFormat(String pattern) 
          用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
    参数:
        String pattern:传递日期和时间的模式
        在模式中写y代表年
        在模式中写M代表月
        在模式中写d代表日
        在模式中写H代表时
        在模式中写m代表分
        在模式中写s代表秒
        "yyyy-MM-dd HH:mm:ss" "2020-08-10 11:56:03"
        "yyyy年MM月dd日 HH时mm分ss秒"
        "yyyy/MM/dd HH:mm:ss"    
   注意:
    1.表示模式的字母不能随便写(y代表年,M代表月...),表示年月日时分秒的连接符号可以随意写(-,/...)
    2.表示模式的字母严格区分大小写    

2.SimpleDateFormat类的常用方法

代码示例

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
​
​
/*
    DateFormat类:它是一个抽象类。不能new
        String format(Date date)  将日期转成字符串格式。
        Date parse(String source) 将字符串转成日期格式。
​
    SimpleDateFormat是DateFormat的子类。
 */
public class TestDateFormat {
    
    public static void main(String[] args) throws ParseException {
        method2();
    }
​
    /*
        Date parse(String source) 将字符串转成日期格式。
     */
    public static void method2() throws ParseException {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入日期(yyyy-MM-dd):");
        String d = sc.next(); // 2020-10-18
​
        //创建SimpleDateFormat对象,把字符串转换为日期类型
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(d);
​
        System.out.println(date); //Sun Oct 18 00:00:00 CST 2020
​
    }
​
    /*
        SimpleDateFormat(String pattern)
          用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
​
        new SimpleDateFormat(pattern);
        参数:
            String pattern:传递日期和时间的模式
            在模式中写y代表年
            在模式中写M代表月
            在模式中写d代表日
            在模式中写H代表时
            在模式中写m代表分
            在模式中写s代表秒
     */
    public static void method1(){
        //创建日期对象
        Date date = new Date();
        System.out.println(date);
​
        //使用SimpleDateFormat对象,把日期转换为字符串格式输出
        // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
        String d = sdf.format(date);// 将日期转成字符串格式。
​
        System.out.println(d); //2020年10月18日 11:20:21
    }
}

 

三、Calendar类

1.Calendar类介绍&创建对象的方式

  • 概述:

    Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEARMONTHDAY_OF_MONTHHOUR日历字段之间的转换提供了一些方法。

  • 创建对象:

    //对象表示的是系统当前时间
    Calendar c = Calendar.getInstance();

    示例:

    
    import java.util.Calendar;
    ​
    public class TestCalender {
        public static void main(String[] args) {
            //创建日历对象
            Calendar c = Calendar.getInstance();
            System.out.println(c);
        }
    }

    输出结果:

    java.util.GregorianCalendar[time=1603003120822,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=2020,MONTH=9,WEEK_OF_YEAR=43,WEEK_OF_MONTH=4,DAY_OF_MONTH=18,DAY_OF_YEAR=292,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,MINUTE=38,SECOND=40,MILLISECOND=822,ZONE_OFFSET=28800000,DST_OFFSET=0]

     

  • 常用方法:

方法说明
int get(int field)获取某个字段的值
void set(int field,int value)设置某个字段的值
void add(int field,int amount)偏移某个字段的值(在原有的基础上加减)

2.Calendar类中的常用成员方法

/*
    Calendar类中的常用成员方法(重点)
        int get(int field)  获取指定日历字段的值
        void set(int field, int value) 将给定的日历字段设置为给定值
        void add(int field, int amount) 把指定的日历字段,增加|减少指定的值
        
    以上这些方法的参数(int field),传递指定的日历字段,这些字段在Calendar类中被定义为了常量
        年:public final static int YEAR = 1;
        月:public final static int MONTH = 2;
        日:public final static int DATE = 5;
        日:public final static int DAY_OF_MONTH = 5;
        时:public final static int HOUR = 10;
        分:public final static int MINUTE = 12;
        秒:public final static int SECOND = 13;
        星期:public final static int DAY_OF_WEEK = 7;
 */

import java.util.Calendar;
​
public class TestCalender {
    public static void main(String[] args) {
        show4();
    }
​
    //void add(int field,int amount) 在原有的基础上加/减
    private static void show4() {
        Calendar c = Calendar.getInstance();
        //处理年
        c.add(Calendar.YEAR,-1);
        //处理月份
        c.add(Calendar.MONTH,2);
        //处理日
        c.add(Calendar.DATE,25);
​
        //得到年
        int year = c.get(Calendar.YEAR);
        System.out.println(year+"年");
​
        //得到月
        int month = c.get(Calendar .MONTH);
        System.out.println((month+1)+"月");
​
        //得到日
        int date = c.get(Calendar.DATE);
        System.out.println(date+"日");
    }
​
    //void set(int field,int value)设置某个字段的值
    private static void show3() {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR,8888);
        c.set(Calendar.MONTH,11);
        c.set(Calendar.DATE,35);
​
        System.out.println(c.get(Calendar.YEAR)+"年");
        System.out.println((c.get(Calendar.MONTH)+1)+"月");
        System.out.println(c.get(Calendar.DATE)+"日");
    }
​
    //get方法获取日历字段的数据
    /*
        get方法的参数:
            public final static int YEAR = 1; 年
            public final static int MONTH = 2; 月
            public final static int DATE = 5; 日
            public final static int DAY_OF_MONTH = 5;
            public final static int DAY_OF_WEEK = 7; 星期  0~6
            public final static int DAY_OF_WEEK_IN_MONTH = 8; 本月的第几周
            public final static int HOUR = 10;
            public final static int MINUTE = 12;
            public final static int SECOND = 13;
     */
    private static void show2() {
        //创建日历对象
        Calendar c = Calendar.getInstance();
        //得到年
        int year = c.get(Calendar.YEAR);
        System.out.println(year+"年");
​
        //得到月
        int month = c.get(Calendar .MONTH);
        System.out.println((month+1)+"月");
​
        //得到日
        int date = c.get(Calendar.DATE);
        System.out.println(date+"日");
​
        //得到时分秒
        //System.out.println(c.get(Calendar.HOUR)+"时"+c.get(Calendar.MINUTE)+"分"+c.get(Calendar.SECOND)+"秒");
        System.out.println(c.get(Calendar.HOUR_OF_DAY)+"时"+c.get(Calendar.MINUTE)+"分"+c.get(Calendar.SECOND)+"秒");
​
        System.out.println("星期:"+(c.get(Calendar.DAY_OF_WEEK)-1));
​
        System.out.println(c.get(Calendar.DAY_OF_WEEK_IN_MONTH));
    }
​
    //创建日历对象
    public static void show1(){
        //创建日历对象
        Calendar c = Calendar.getInstance();
        System.out.println(c);
    }
}



 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值