460-JavaSE进阶-java对日期的处理

460-JavaSE进阶-java对日期的处理

  • 源示例代码
package com.bjpowernode.javase.date;

import java.text.SimpleDateFormat;
import java.util.Date;

/*
java中对日期的处理
    这个案例最主要掌握:
        知识点1:怎么获取系统当前时间    //调用无参构造方法 Date.java中 Date();
        知识点2:String ---> Date
        知识点3:Date ---> String
 */
public class DateTest01 {
    public static void main(String[] args) throws Exception {

        // 获取系统当前时间(精确到毫秒的系统当前时间)
        // 直接调用无参数构造方法就行。
        Date nowTime = new Date();

        // java.util.Date类的toString()方法已经被重写了。
        // 输出的应该不是一个对象的内存地址,应该是一个日期字符串。
        /*这里考虑为什么输出的 谁是??(nowTime) 内存地址
        * 在println的ctrl中String s = String.valueOf(x);
        * 将nowTime 转化为 String类型了
        */

        //System.out.println(nowTime); //Thu Mar 05 10:51:06 CST 2020

        // 日期可以格式化吗?
        /*格式化 就是 将Date类型 转换成 String 类型*/
        // 将日期类型Date,按照指定的格式进行转换:Date --转换成具有一定格式的日期字符串-->String
        // SimpleDateFormat是java.text包下的。专门负责日期格式化的。
        /*这个将日期格式化的意思是 就是将输出的日期转换成 String 类型

        SimpleDateFormat (这是什么??是方法吗?是类?)
            答:是类

        Format 是什么意思??
         //答:格式

        */



        /*
        yyyy 年(年是4位)
        MM 月(月是2位)
        dd 日
        HH 时
        mm 分
        ss 秒
        SSS 毫秒(毫秒3位,最高999。1000毫秒代表1秒)
        注意:在日期格式中,除了y M d H m s S这些字符不能随便写之外,剩下的符号格式自己随意组织。
         */

        /*几个就是精确几位,这个应该可以随意搭配,通过 " - : / "来进行搭配*/

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        //SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        //SimpleDateFormat sdf = new SimpleDateFormat("yy/MM/dd HH:mm:ss");

        String nowTimeStr = sdf.format(nowTime);
        /* 到这里了,SimpleDateFormat实例化的变量.format() */
        System.out.println(nowTimeStr);

        /*
        问题:这个不是矛盾了嘛?println 可以把Date类自动转化为String类型,为什么还要Date和String之间转化??
            //答:输出 Date类中的 date() 这个无参构造函数(当前时间)没有进行格式化是不可以变的,想要改变时间的表达方法,需要格式化,格式化后需要转换String
            
        * */

        /*
        * Date --> String 步骤
        * 1.首先调用Date.java 中的无参构造函数 date()  //我觉得是实例化了一个,这两种是否有关联?
        * 2.进行格式化 date ,用SimpleDateFormat("") 进行实例化
        * //用SimpleDateFormat()是SimpleDateFormat类中的一个方法
        * 3.用 .format() 构造方法来进行转换为 String
        * */

        // 假设现在有一个日期字符串String,怎么转换成Date类型?
        /*进行反过来转换  String <--> */
        // String --> Date
        String time = "2008-08-08 08:08:08 888";
        //SimpleDateFormat sdf2 = new SimpleDateFormat("格式不能随便写,要和日期字符串格式相同");
        // 注意:字符串的日期格式和SimpleDateFormat对象指定的日期格式要一致。不然会出现异常:java.text.ParseException

        /*还是使用SimpleDateFormat,
        * SimpleDateFormat 负责对Date类型和String类型的互换*/

        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        Date dateTime = sdf2.parse(time);
        /* 这个 .parse 构造方法 是 SimpleDateFormat的??还是Date的??
        *
        *   答: 应该是Date.java中的静态方法
        * */
        System.out.println(dateTime); //Fri Aug 08 08:08:08 CST 2008

    }
}
输出:
2020-11-11 20:36:50 836
Fri Aug 08 08:08:08 CST 2008

进程已结束,退出代码 0
  • 手示例代码
package com.bjpowernode.javase1.date;

import java.text.SimpleDateFormat;
import java.util.Date;

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

        // 获取系统当前时间(精确到毫秒的系统当前时间)
        // 直接调用无参数构造方法就行
        Date date = new Date();

        System.out.println(date);  //Wed Nov 11 16:29:05 CST 2020
        /* 实例化了一个变量date,date直接调用Date.java中的无参构造方法*/


        //问题1:构造方法是什么??
        /*答:就是具体调用别的类里的方法,然后进行使用的,跟实参差不多*/

        /*
        yyyy 年(年是4位)
        MM 月(月是2位)
        dd 日
        HH 时
        mm 分
        ss 秒
        SSS 毫秒(毫秒3位,最高999。1000毫秒代表1秒)
        注意:在日期格式中,除了y M d H m s S这些字符不能随便写之外,剩下的符号格式自己随意组织。
         */

        SimpleDateFormat q1 = new SimpleDateFormat("YYYY-MM-HH-mm-ss-SSS");     //pattern 模式
        String q2 = q1.format(date);
        /*format(Object obj)    格式化一个对象来生成一个字符串。*/
        System.out.println(q2);


    }

}
输出:
Wed Nov 11 20:37:49 CST 2020
2020-11-20-37-49-140

进程已结束,退出代码 0
  • 测示例代码
package com.bjpowernode.javase1.date;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test01 {
    public static void main(String[] args) {
        Date date = new Date();
        /*调用了无参构造函数*/
        //实例化了 date 变量 , 把Date.java 中的 无参构造Date()给了 变量date

        //因为直接输出输出不了,所有进行String 化,
        //之所以输出了,是因为 格式化了


        SimpleDateFormat qwe = new SimpleDateFormat("YYYY-MM-dd");
        //格式化

        String q1 = qwe.format(date);
        System.out.println(q1);

        /*问题1: 发现--年--月--日 ,不会写*/
            //答:YYYY-MM-dd
    }
}

输出:
2020-11-11

进程已结束,退出代码 0
posted @ 2021-08-21 15:07  nkndlawn  阅读(30)  评论(0编辑  收藏  举报