日期类 及其格式化
日期类 Date类
位于java.util.Date 使用时需要导包
import java.text.SimpleDateFormat;//位于java.text.SimpleDateFormat,使用时需要导包
import java.util.Date; //位于java.util.Date 使用时需要导包
public class date01 {
public static void main(String[] args) throws Exception{
// 1.获取当前系统时间(精确到毫秒的) 直接调用无参构造
Date t1 = new Date();
System.out.println(t1);//Fri Nov 26 22:59:24 CST 2021
//直接输出对象时,默认调用引用的toString方法,
//可以知道 此处:java.util.Date类已经重写了toString方法
// 2.日期格式化:将日期类Date,按照指定日期格式输出
//用到位于java.text.包下的SimpleDateFormat类
//SimpleDateFormat t2 = new SimpleDateFormat(String类型的(自定义日期格式));
/*日期格式:
* yyyy 年(年是4位)
* MM 月 (月是2位)
* dd 日
* HH 时
* mm 分
* ss 秒
* SSS 毫秒(三位,最高是999,因为1000毫秒就是1秒)
* 注意:在日期格式中,除了y M d H m s S 这些字符不可以随便写外,剩下的符号可以自己组织
* */
SimpleDateFormat t2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
SimpleDateFormat t3 = new SimpleDateFormat("yyyy/MM/dd");
SimpleDateFormat t4 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
//用SimpleDateFormat类创建对象后,调用format(传过来的Date类的形参)方法,返回字符串的形式
String a1 = t2.format(t1);
String a2 = t3.format(t1);
String a3 = t4.format(t1);
System.out.println(a1);//2021-11-26 23:24:01 092
System.out.println(a2);//2021/11/26
System.out.println(a3);//2021/11/26 23:24:01
//那如果有一个日期时间字符串,怎么转换为日期Date类型?
//用到SimpleDateFormat t2 = new SimpleDateFormat(String类型的日期格式);
//此处的日期格式要与给定的日期时间字符串格式相同,如果不同,运行时报错: java.text.ParseException
//调用parse()方法,返回一个Date类型的对象
String wei = "2002-02-24 06:06:06";
SimpleDateFormat t = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date a4 = t.parse(wei);//此处有异常,直接抛出
System.out.println(a4);//Sun Feb 24 06:06:06 CST 2002
//直接调用Date类已经重写的toString方法
//2.以上掌握 String日期和Date类型的相互转换
// 3.获取自1970年1月1日 00:00:00 000 到当前系统时间的总毫秒数 System.currentTimeMillis()
System.out.println(System.currentTimeMillis());//1637941529678
//作用就是计算时间间隔
/*简单总结System类的相关属性和方法:
* System类是属于java.lang包下的,可以直接使用,不需要导包
* System.out 【out是System类的静态变量】
* System.out.println() 【println()方法不是System类的,而是PrintStream类的方法】
* System.gc() 【建议启动垃圾回收器】
* System.currentTimeMillis() 【获取自1970年1月1日 00:00:00 000 到当前系统时间的总毫秒数】
* System.exit(0) 【退出JVM】
* */
// 4.通过毫秒数构造Date对象 Date(long date)构造方法,此处的参数是获取自1970年1月1日 00:00:00 000 到当前系统时间的总毫秒数
Date time = new Date(1);//参数是毫秒
SimpleDateFormat t5 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
String a5 = t5.format(time);
System.out.println(a5);//1970-01-01 08:00:00 001 此处的8,是因为所在地区的经纬不同,与标准的格林时间有时间差
//例如:想获取昨天的此时的时间?现在的毫秒减去一天的毫秒,System.currentTimeMillis()-1000*60*60*24
Date time1 = new Date(System.currentTimeMillis()-1000*60*60*24);
String a6 = t5.format(time1);
System.out.println(a6);//2021-11-26 00:11:47 963
}
}