Java Study_Data类_毫秒值的概念和作用

第2节 Date类

06_毫秒值的概念和作用

(一)介绍

java.util.Date:表示日期和时间的类
类Date表示特定的瞬间,精确到毫秒
毫秒:千分之一秒,1000毫秒=1秒
特定的瞬间:一个时间点、一刹那时间
2088-08-08 09:55:33:333 瞬间
2088-08-08 09:55:33:333 瞬间

毫秒值的作用:可以对日期和时间进行计算
2099-01-03到2088-01-01中间一共有多少天
可以日期转换为毫秒进行计算,计算完毕,把毫秒转换为日期

把日期转换为毫秒
当前日期:2088-01-01
时间原点(0)毫秒:1970年1月1日 00:00:00(英国格林威治时间)
就是计算当前日期到时间原点之间一共经历了多少毫秒

注意:
中国属于东八区,会把时间增加八个小时 1970年1月1日 08:00:00

把毫秒转换为日期
1天=24 × \times × 60 × \times × 60 = 86400 × \times × 1000 =86400000毫秒

例如:获取当前系统时间到1970年1月1日 00:00:00经历了多少毫秒
System.out.println(System.currentTimeMillis());

(二)练习
令系统打印输出当前时间,具体年月日,直到毫秒
因为学习到这一节,就自己想着尝试打印出现在的系统时间。其实本质上就是毫秒转换为日期,其中需要涉及到一些数学计算。下面是我自己写的,可能会有些冗余,例如判断是几月,可能还会有更好的更简便的方法,我只是用了最能想到的一种,许多if的嵌套。如果学到后面,有简便方法,再更新。

public class Demo01Date {
    public static void main(String[] args) {
        long n = System.currentTimeMillis();
//        System.out.println(n);//获取当前系统时间到1970年1月1日 00:00:00经历了多少毫秒
       long totaldate = n/86400000;
//        System.out.println(totaldate);//输出一共有多少天
        long date = totaldate;
        int year = 1970;
        while (date > 365){
            if(year % 4 != 0){
                date = date - 365;
                year++;
            }else if ((year % 4 == 0 && year % 400 !=0)|| year % 400 == 0){
                date = date -366;
                year++;
            }
        }
        int month = 0;
        int feb = 28;
        long nowdate = 0;//当前月的第几天
        if((year % 4 == 0 && year % 400 !=0)|| year % 400 == 0){
            feb = 29;
        }
        if(date < 31){
            month = 1;
            nowdate = date;
        }else if (31 <= date && date < 31+feb){//这里的date要取到31,意思是,当date=31时,显示已经过了31天了,现在肯定是2月份了
            month = 2;
            nowdate = date - 31 + 1;
        }else if (31+feb <= date && date < 62+feb){
            month = 3;
            nowdate = date - 31-feb + 1;
        }else if (62+feb <= date && date < 92+feb){
            month = 4;
            nowdate = date - 62-feb + 1;
        }else if (92+feb <= date && date < 123+feb){
            month = 5;
            nowdate = date - 92-feb + 1;
        }else if (123+feb <= date && date < 153+feb){
            month = 6;
            nowdate = date - 123-feb + 1;
        }else if (153+feb <= date && date < 184+feb){
            month = 7;
            nowdate = date - 153-feb + 1;
        }else if (184+feb <= date && date < 215+feb){
            month = 8;
            nowdate = date - 184-feb + 1;
        }else if (215+feb <= date && date < 245+feb){
            month = 9;
            nowdate = date - 215 -feb + 1;
        }else if (245+feb <= date && date < 276+feb){
            month = 10;
            nowdate = date - 245 -feb + 1;
        }else if (276+feb <= date && date < 306+feb){
            month = 11;
            nowdate = date - 276 -feb + 1;
        }else if (306+feb <= date && date < 337+feb){
            month = 12;
            nowdate = date - 306-feb + 1;
        }
//        System.out.println(month);
//        System.out.println(nowdate);
        long mod = (n % 86400000);
        long hour = mod/1000/60/60 + 8;
//        System.out.println(mod);
//        System.out.println(hour);
        long min = (mod/1000/60) % 60;
//        System.out.println(min);
        long sec = mod/1000 - (hour-8)*60*60- min * 60;
//        System.out.println(sec);
        long milsec = mod %1000;//输出到毫秒
//        System.out.println(milsec);
        System.out.println("从1970年00:00:00(英国格林威治)到现在系统时间经过了"+n+"毫秒。");
       System.out.println("一共是"+totaldate+"天。");
        if (sec < 10 && min <10){  //如果分钟不到两位的话,例如9分钟,令其显示09
            System.out.println("现在是"+year+"年"+month+"月"+nowdate+"日"+" "+ hour + ":"+ "0"+ min + ":"+"0" + sec + ":" + milsec);
        }
        if(sec < 10&& min >= 10 ){
            System.out.println("现在是"+year+"年"+month+"月"+nowdate+"日"+" "+ hour + ":"+ min + ":"+"0" + sec + ":" + milsec);
        }
        if(sec >= 10&& min < 10 ){
            System.out.println("现在是"+year+"年"+month+"月"+nowdate+"日"+" "+ hour + ":"+"0"+ min + ":" + sec + ":" + milsec);
        }
        if(sec >= 10&& min >= 10 ){
            System.out.println("现在是"+year+"年"+month+"月"+nowdate+"日"+" "+ hour + ":"+ min + ":" + sec + ":" + milsec);
        }
    }
}

输出结果为:

从1970年00:00:00(英国格林威治)到现在系统时间经过了1567331402856毫秒。
一共是18140天。
现在是2019年9月1日 17:50:02:856
07_Date类的构造方法和成员方法

(1)Date类的空参数构造方法:
Date()获取当前系统的日期和时间

private static void demo01(){
    Date date = new Date();
    System.out.println(date);//Sun Sep 01 19:58:55 CST 2019
}

(2)Date类的带参数的构造方法:
Date(long date):传递毫秒值,把毫秒值转换为Date日期

private static void demo02(){
    Date date = new Date(1567338870549L);
    System.out.println(date);//Sun Sep 01 19:54:30 CST 2019
}

(3)Date类的long getTime()把日期转换为毫秒值
返回自1970年1月1日 00:00:00GMT以来Date对象表示的毫秒值,相当于System.currentTimeMillis()

private static void demo03(){
    Date date = new Date();
    long time = date.getTime();
    System.out.println(time);//1567339135742
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值