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