总结04 时间及时间格式处理之System/SimpleDateFormat/Date类的常用方法API.

System在时间中的方法
时间操作
// System.currentTimeMillis(); 取1970年1月1日起,至当前时间的毫秒.
//System.currentTimeMillis()/1000/60/60/24/365 通过除法得出1970年1月1日起,至当前时间的年数.
//System.currentTimeMillis()1.0/1000/60/60/24/365 通过除法得出1970年1月1日起,至当前时间的详细年数(即浮点小数)
===Date类

一/Date类 的操作
时间操作
构造方法1/ public date() 获取最接近毫秒(最准确的)的当前时间 如:Fri Dec 20 09:45:50 CST 2019
构造方法2/ public date(long类型参数) 以1970年1月1日为起点,把输入的数值当作其终点毫秒数,然后计算从起点(1970年1月1日)到该毫秒数的终点时间.
如参数数值为{1000
60*60} 则为:1000毫秒乘以60再乘以60,也就是一小时.
那么时间就会从起点的’1970年1月1日8点’变为’1970年1月1日9点;
即:把输入一个数值当作毫秒数,此时会计算从1970年1月1日8点到该毫秒值的时间点.
以上两种构造方法,是指在创建Date对象时进行的传参使用

二/常用方法
1/ getTime(); 获取1970年1月1日起至当前的毫秒数 效果同System类的静态方法currentTimeMillis()和无参构造的public date()一致.
2/ setTime(long类型参数); 以1970年1月1日为起点,以毫秒数为单位来设置时间. 效果同构造方法的’date(long类型参数)'一样
注意:如果要设置为当前时间,则括号内的参数出不能直接为date的对象名,可以是同为Long类型的System.currentTimeMillis

**======== =SimpleDateFormat类======================**
时间格式
一/SimpleDateFormat类 的操作
构造方法1/ public SimpleDateFormat() 以默认的日期时间格式和符号,来表示日期时间.
构造方法2/ public SimpleDateFormat(String pattern) 手动设置指定的日期时间之格式与符号,来表示日期时间.

二/常用方法
1/ format(日期数据) 将Date等对象获取的日期时间以字符串返回,如将println打印输出的Date对象所获取的日期时间,转换为字符串.
理解:非String型的日期数据(如Date) -------> String
2/ parse(日期字符串) 将String字符串中的日期,赋值给一些日期属性的对象,如Date类属性的对象.
理解:String --------> 非String型的日期数据(如Date)
要求:String中的字符串日期格式,必须同 日期对象中的格式相同.而无参构造所默认的格式跟Date的日期格式是相同的,可以直接转换.

====Calendar
日期(日历表)操作
1/ 对象名.get(Calendar.日期单位) 获取当前年月日时分等等
格式如: int nianYear = calendarObj.get(Calendar.YEAR)

2/ 对象名.add(Calendar日期单位.数值)             从当前的数值单位(年/月/日/时/分)获取今后或从前的时间单位.
                                                 比如括号为'Calendar.YEAR.-5'则是获取5年前的年数,'Calendar.YEAR.+5'则是获取5年后的;
    格式如:calendarObj.add(Calendar.YEAR,-13);

3/ 对象名.set(单位数值)                          直接设置该Calendar对象的日历日期,如:calendarObj.set(2016,7,21) 则日期被设置为:2016年6月21日.
   格式如: calendarObj.set(2016,4,21,21,21);

注意:1/在系统中,月份是以0为起点,所以假如这个月份是11月,那么系统中其实是10月
2/在系统中,一个星期的第一天是星期天,因此假若一个数值为2的星期数值,那么结果则为星期1.

时间操作/时间格式处理之代码

public class SystemMian {
    public static void main(String[] args) {
//时间
        //    System.currentTimeMillis();     取1970年1月1日起,至当前时间的毫秒.
        //System.currentTimeMillis()/1000/60/60/24/365    通过除法得出1970年1月1日起,至当前时间的年数.
        //System.currentTimeMillis()*1.0/1000/60/60/24/365    通过除法得出1970年1月1日起,至当前时间的详细年数(即浮点小数)

        System.out.println(System.currentTimeMillis() / 1000 / 60 / 60 / 24 / 365 + "年");
        System.out.println(System.currentTimeMillis() * 1.0 / 1000 / 60 / 60 / 24 / 365 + "年");

        //'currentTimeMillis' 在'耗时'方面的应用.
          //如计算执行某个代码耗时了多久. 计算for循环一万次用了多久
        long start = System.currentTimeMillis();//此处以1970年1月1日至现在的毫秒值为计时开始    cureentTimeMillis的返回值有'long'类型,因此变量类型也应为long.
        for (int i = 0; i < 10000; i++) {
            System.out.println(i);

        }
        long end = System.currentTimeMillis();//此处以1970年1月1日至现在的毫秒值为计时结束.
        System.out.println("毫秒数为:"+(end-start));
        System.out.println("计时开始的'start'毫秒数为:"+start);
        System.out.println("计时结束的'end'毫秒数为:"+end);
        int result = (int)(end-start); //用计时结束的毫秒值减去计时开始的毫秒值,从而得出这之间耗时了多久.
                                        //因为'System.currentTimeMillis'的返回值类型为long,因此需要用括号让'计时开始'和'计时结束'以int型进行计算,随后再以int型转换来赋值给左侧的变量.
        System.out.println("所耗时为"+result+"毫秒");


    }
}



public class DateOfTime {
    public static void main(String[] args) throws ParseException {
//        ===========================================Date类=======================================
        //构造方法1 获取当前时间
        Date dateObj = new Date();
        System.out.println(dateObj);//Systen,out.println(Date对象); 可直接获取时间.
        System.out.println("================");

        //构造方法2  毫秒数值:1000*60*60(一小时)   过程:Thu Jan 01 08:00:00 CST 1970(隐性计算起点) ====到====> Thu Jan 01 09:00:00 CST 1970(显性计算终点)
        Date dateObjTwo = new Date(1000 * 60 * 60L);
        System.out.println(dateObjTwo);//Thu Jan 01 09:00:00 CST 1970
        System.out.println("================");

        //方法1 getTime(); 获取1970年1月1日至当今的毫秒数
        Date dateObjThree = new Date();
        System.out.println(dateObjThree.getTime());
        System.out.println(dateObjThree.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365+"年"); //获取年的算法,如果要去掉双精度,那么就去掉其中的'*1.0'.
        System.out.println("================");

        //方法2 setTime();
        dateObjThree.setTime(1000*60*60*24*365L); //设置1970年1月1日起至毫秒数所规定的终点时间 如参数为:1000*60*60*24*365L  则日期为:Fri Jan 01 08:00:00 CST 1971
        System.out.println(dateObjThree);
        dateObjThree.setTime(System.currentTimeMillis());//参数为System.currentTimeMillis()则为获取当前时间,System.CurrentTimeMillis用于获取以毫秒数为单位的当前时间.
        System.out.println(dateObjThree);
        System.out.println("================");



// ===========================================SimpleDateFormat类=======================================
        System.out.println("======================SimpleDateFormat类================d===========");
        SimpleDateFormat simpleDateFormatObj = new SimpleDateFormat();//以默认的日期时间格式和符号,来表示日期时间. 如:2019/12/20 上午11:35
        SimpleDateFormat simpleDateFormatObjTwo = new SimpleDateFormat("YY-LL-dd-HH-mm-ss");//以指定日期格式来表示日期时间 其中的'-'为年月日时分秒之间的分割符号
                                                                                                                //如:19-12-20-11-35-44

        //format 日期数据 ------> String
        String timeString = simpleDateFormatObj.format(dateObj);  //默认格式:对象类型的日期,转为字符串类型的日期
        System.out.println(timeString);
        String timeStringTwo = simpleDateFormatObjTwo.format(dateObj);  //指定格式:对象类型的日期,转为字符串类型的日期
        System.out.println(timeStringTwo);

        //parse String --- 日期数据

     //   dateObjTwo = simpleDateFormatObj.parse(timeStringTwo); //此处出现异常,输入Alt+Enter,选择Add exception to method signature进行异常处理,即可不会报错.
   //     System.out.println(dateObjTwo);  //此处因为日期格式不对等,所以运行后出现报错.
        String timeStringThree = "Thu Jan 01 012:00:00 CST 2019"; //此处日期格式相同,那么就可以正常输出. 因为SimpleDateFormat默认的日期格式,同Date的默认日期格式是相对等的
        dateObjTwo = simpleDateFormatObj.parse(timeString); //
        System.out.println(dateObjTwo);


    }
}


**日期操作**

```java
public class calendarLoad {
    public static void main(String[] args) {
        Calendar calendarObj = Calendar.getInstance(); //因为Calendar类是一个抽象类,因此实际上我们使用的是它的子类方法,所以直接new的话会重写.
                                                       //为此,Calendar特意给出了一个static静态方法,以便我们用它的日历功能.


       // 1/  对象名.get(Calendar.日期单位) 获取当前年月日时分等等
       int nianYear = calendarObj.get(Calendar.YEAR); //获取当前年
        int yueMonth = calendarObj.get(Calendar.MONTH);//获取当前月 特殊:在系统中,第一个月份为数值0
        int riDayDate = calendarObj.get(Calendar.DATE);//获取当前日 ,此处并非为单词'day'而是'date'
      int xingqiSUNDAY =  calendarObj.get(Calendar.SUNDAY);//获取当前星期 特殊:在系统中,一个星期的第一天为星期一
        int xiaoshi = calendarObj.get(Calendar.HOUR);//获取当前小时

        System.out.println("当前年"+nianYear+" 当前月"+yueMonth+" 当前日"+riDayDate+" 当前星期"+xingqiSUNDAY+" 获取当前小时"+xiaoshi);

        System.out.println("==================");


     //   2/ 对象名.add(Calendar日期单位.数值)             从当前的数值单位(年/月/日/时/分)获取今后或从前的时间单位.
        calendarObj.add(Calendar.YEAR,-13);
        calendarObj.add(Calendar.MONTH,-4); //获取今年8月的. 但系统为7,因为系统把月数从0开始算.
        calendarObj.add(Calendar.DATE,-2); // 获取2天前
        calendarObj.add(Calendar.HOUR,-5); //获取 5小时前

       nianYear = calendarObj.get(Calendar.YEAR);
         yueMonth = calendarObj.get(Calendar.MONTH);
       riDayDate = calendarObj.get(Calendar.DATE);
       xiaoshi = calendarObj.get(Calendar.HOUR);
        System.out.println("获取前13年为:"+nianYear+" 获取前4月为:"+yueMonth+" 获取前2日为:"+riDayDate+"  获取前5小时为:"+xiaoshi);
        System.out.println("===================");


     //   3/ 对象名.set(单位数值)                          直接设置该Calendar对象的日历日期,如:calendarObj.set(2016,7,21) 则日期被设置为:2016年6月21日.
        calendarObj.set(2016,4,21,21,21);
        nianYear = calendarObj.get(Calendar.YEAR); //获取当前年
        yueMonth = calendarObj.get(Calendar.MONTH);//获取当前月 特殊:在系统中,第一个月份为数值0
         riDayDate = calendarObj.get(Calendar.DATE);//获取当前日 ,此处并非为单词'day'而是'date'
        xiaoshi = calendarObj.get(Calendar.HOUR);//获取当前小时
       int fenzhong_Minute = calendarObj.get(Calendar.MINUTE);//获取当前分钟
        System.out.println("获取当前设置了的年份为:"+nianYear+" 获取当前设置了的月份为:"+yueMonth+" 获取当前设置了的日期为:"+riDayDate+"  获取当前设置了的小时为:"+xiaoshi+" 获取当前设置了的分钟为:"+fenzhong_Minute);


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值