Java里的Date类部分简介

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

可以把日期转换为毫秒,再把毫秒转换为日期

当前日期:2020-1-8

时间原点(1970年1月1日00:00:00)(英国格林威治时间)

就是计算当前日期到时间远点之间一共经历了多少毫秒

把毫秒转换为日期1天=246060=86400(s)*1000=86400000毫秒

注意:中国属于东八区,会把时间增加八个小时,且Java里的CST代表(China Standard Time)中国标准时间

如下代码可将时间转为毫秒

public class Demo01Date {
    public static void main(String[] args) {
        System.out.println(System.currentTimeMillis());
        //获取当前时间到1970年经历了多少毫秒
    }

}

在这里插入图片描述

结果如图所示

Date类的成员方法

getTime()方法,相当于之前的System.currentTimeMillis()方法,获取系统当前时间距离格林威治时间的毫秒数。通过Date类创建对象,可以是有参构造及无参构造,有参构造传的参数是距离格林威治时间的毫秒数,返回CST时间。

代码如下所示:

public class Demo02Date {
    public static void main(String[] args) {
        demo01();
        demo02();
        demo03();
    }
    /*
        Date 类的成员方法
        long getTime() 把日期转换为毫秒相当于System.currentTimeMillis()
        返回自1970年到现在的Date对象表示的毫秒数
     */
    private static void demo03(){
        Date date = new Date();
        long time=date.getTime();
        System.out.println(time);
        Date d2=new Date(time);
        System.out.println(d2);
    }

    private static void demo02(){
        Date d1=new Date(1578464264547L);
        System.out.println(d1);


    }
    private static void demo01(){
        Date date=new Date();
        System.out.println(date);
    }

}


DateFormat类,这是一个抽象类,无法创建对象,可以使用其下一个子类simpleDateFormat类。

simpleDateFormat类成员方法及构造方法

成员方法:
String format(Date date)按照指定的模式,把Date日期,格式化为指定的模式
Date parse(String source)把符合模式的字符串,解析为Date日期

构造方法:
simpleDateFormat(String pattern)用给定的模式默认语言环境的日期格式符号构造
参数: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 {
        demo01();
        demo02();
    }
    /*
        使用DateFormat类中的方法parse,把文本解析为日期
        Date parse(String source)把符合模式的字符串解析为Date日期
        使用步骤:
        1.创建SimpleDateFormat对象,构造方法中传递指定的模式
        2.调用SimpleDateFormat对象中的方法parse把符合构造方法中模式的字符串解析
        为Date日期
        如果字符串和构造方法中的模式不一样,那么程序会抛出异常
        调用一个抛出了异常的方法,就必须处理这个异常,要么throws继续声明
        抛出这个异常,要么 try..catch自己处理这个异常
     */
        private static void demo02() throws ParseException {
             SimpleDateFormat sdf =new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
            Date date=sdf.parse("2020年1月10日12时10分10秒");
            System.out.println(date);
        }



    //使用DateFormat类中的方法,把日期格式转换为文本
    /*
        使用步骤:
            创建simpleDateFormat对象,构造方法中传递指定的模式
            调用simpleDateFormat对象的方法format,按照构造方法中指定的模式把
            Date日期格式化为符合模式的字符串
     */
    private static void demo01(){

        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
        Date date =new Date();
        String text = sdf.format(date);
        System.out.println(text);
    }
}

在这里插入图片描述

练习:
请使用日期时间相关的API,计算出一个人已经出生了多少天
1.使用Scanner类中的方法获取出生日期
2.把Date格式的出生日期转换为毫秒值
3当前日期转换为毫秒值
4.毫秒值相减
5把毫秒值转换为天

代码如下:

public class Demo02Test {
    public static void main(String[] args) throws ParseException {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入您的出生日期:格式为yyyy-MM-dd");
        String birthdayDateString=sc.next();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Date birthdayDate = sdf.parse(birthdayDateString);
        long time=birthdayDate.getTime();
        Date curent = new Date();
        long time1 = curent.getTime();
        long time2=(time1-time)/86400000;
        //24*60*60*1000ms
        System.out.println(time2);
    }
}


在这里插入图片描述

发布了40 篇原创文章 · 获赞 10 · 访问量 2559

猜你喜欢

转载自blog.csdn.net/lsdstone/article/details/103900063