Java中Date类以及SimpleDateFormat类和calendar类的使用

一、Date类

1. 概述

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

2.Date类的构造方法

2.1 public Date();

官方讲解:public Date():分配Date对象并初始化对象,以表示分配它的时间(精确到毫秒)

通俗的讲:public Date():分配Date对象并初始化对象,用来获取当前环境的时间,精确到毫秒。

public class Demo_01 {
    public static void main(String[] args) {

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

    }
}

输出结果如下:

 2.2 public Date (long date);

官方讲解:public Date (long date):分配Date对象并初始化此对象,以表示自从标准基准时间。

通俗的讲:public Date (long date):分配Date对象并初始化此对象,date变量用来存储毫秒数,用来计算从1970年1月1日00:00:00 开始经过date毫秒后是什么时间。

public class Demo_01 {
    public static void main(String[] args) {

        Date date2 = new Date(215464654);
        System.out.println(date2);

    }
}

输出结果如下:

 3. Date类的常用方法

gettime():用来获取自 1970 年 1 月 1 日 00:00:00 GMT 开始到当前时间的毫秒数(时间戳)

public class Demo_01 {
    public static void main(String[] args) {
        Date date1 = new Date();
        long time = date1.getTime();
        System.out.println(time);
    }
}

输出结果如下:

二、SimpleDateFormat类

1.概述

官方讲解:SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

通俗的说:SimpleDateForma类就是用来实现字符串和日期之间的相互转换。

2.日期和时间模式

字母 日期或时间元素 表示 示例
G Era 标志符 Text AD
y Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800

 3. SimpleDateFormat类中的常用方法

3.1 format():把日期转换成指定格式的字符串

public class Demo_02 {
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date1 = new Date();
        String format = sdf.format(date1);
        System.out.println(format);
    }
}

输出结果如下:

3.2 parse():把指定格式的字符串转换成日期

补充:parse()方法不能直接使用,需要处理异常才能使用。

public class Demo_02 {
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time = "1998-09-21 8:20:38";
        try {
            Date date2 = sdf.parse(time);
            System.out.println(date2);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
    }
}

输出结果如下所示:

三、 Calendar类

1. 概述

官方讲解:Calendar 类是一个抽象类,它为特定瞬间。Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。

通俗的讲:Calendar 类是一个抽象类,可以通过Calendar 的getInstance() 方法返回一个Calendar对象。

2. 常用字段摘要

DATE 表示一个月中的某一天
DAY_OF_MONTH 表示一个月中的某一天
DAY_OF_WEEK 表示一个星期的某一天
DAY_OF_WEEK_IN_MONTH 表示当前月中的第几个星期
DAY_OF_YEAR 表示当前年的天数
AM 表示上午(午夜到中午之间的时间)
AM_PM 指定上午或下午(指示HOUR是在中午之前还是中午之后)
PM 表示下午(中午到午夜之间的时间)
HOUR 表示上午或下午的时间(结尾需要使用AM_PM来指示上午或下午的时间)
HOUR_OF_DAY 表示一天中的小时
MILLISECOND 表示一秒钟的毫秒
MINUTE 表示一小时中的分钟
MONTH 表示月份
SECOND 表示秒数
WEEK_OF_MONTH 表示当前月中的星期数
WEEK_OF_YEAR 表示当前年中的星期数
YEAR 表示年

3. Calendar类的常用方法

3.1 getTime();

getTime():用来获取当前系统的时间

public class Demo_03 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        Date date1 = calendar.getTime();
        System.out.println("当前时间为:"+date1);
    }
}

输出结果如下:

 3.2 get();

get()方法用来获取指定字段的值。

public class Demo_03 {
    public static void main(String[] args) {
        //get方法可以根据 指定的日历字段 获取时间对应的值
        //calendar.get(Calendar.YEAR) 获取 年
        int year = calendar.get(Calendar.YEAR);
        System.out.println("年份:"+year);

        //calendar.get(Calendar.MONTH) 获取 月份
        int month = calendar.get(Calendar.MONTH);//从0开始 11结尾 所以月份得加1
        System.out.println("月份:"+(month+1));

        //calendar.get(Calendar.DAY_OF_MONTH); 获取在月份中的天数(日)
        int date = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println("一个月中的第:"+date+"天");

        //calendar.get(Calendar.DAY_OF_YEAR); 获取在本年中的第几天
        int day_of_Year = calendar.get(Calendar.DAY_OF_YEAR);
        System.out.println("一年中的第:"+day_of_Year+"天");
    }
}

 输出结果如下:

3.3 set();

set()方法用来给某个字段赋值。

public class Demo_03 {
    public static void main(String[] args) {
        //可以获取 指定时间 月份0-11 表示 1-12月
        // second:61 可以自动根据时间转换进一位
        calendar.set(2000,9,28,15,46,61);
        Date date2 = calendar.getTime();
        System.out.println(date2);
    }
}

输出结果如下:

3.4 getTimeInMillis();

getTimeInMillis()方法返回从历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)至现在所经过的毫秒数。
public class Demo_03 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        long timeInMillis = calendar.getTimeInMillis();
        System.out.println("当前时间的毫秒值:"+timeInMillis);
    }
}

输出结果如下:

3.5  getTimeZone();

getTimeZone()方法用来获取时区。

public class Demo_03 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        TimeZone timeZone = calendar.getTimeZone();
        System.out.println("所在时区:"+timeZone);
    }
}

 输出结果如下:

四、 扩展练题

题目:用户按照格式输入出生年月日 时分秒   计算他几岁了?

实现代码如下:

package com.hp.Test09;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/**
 * 拓展作业: 用户按照格式输入出生年月日 时分秒   计算他几岁了?
 */
public class Demo_04 {
    public static void main(String[] args) {
        //提示用户需要输入的出生日期格式
        System.out.println("请根据----年--月--日--时--分--秒 的格式来输入你的出生日期");
        //实现键盘录入
        Scanner scanner = new Scanner(System.in);
        String dateTime=scanner.next();
        //使用SimpleDateFormat类把用户输入的出生日期字符串转换为日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
        try {
            //把键盘录入的出生日期字符串转换为日期对象
            Date born = sdf.parse(dateTime);
            //获取当前时间
            Date current_Time = new Date();
            //把录入日前转换为毫秒数
            long new_born = born.getTime();
            //把当前日期转换为毫秒数
            long new_Current_Time = current_Time.getTime();
            //求出年龄毫秒数
            long years = new_Current_Time - new_born;
            int new_years = (int) (years / 1000 / 60 / 60 / 24 / 365);
            System.out.println("你今年"+new_years+"岁了,已经是成年人了。");


        } catch (ParseException e) {
            throw new RuntimeException(e);
        }


    }
}

输出结果如下:

猜你喜欢

转载自blog.csdn.net/m0_71385552/article/details/128152834