日期类 及其格式化


日期类 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
	}

}

相关