Live2D
复制代码

03-Date日期类型

日期格式类型

1、认识Date类型

package mJava中对日期date的处理;

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

public class DateTest {
	
	public static void main(String[] args) throws Exception {
		
		//Date类是在java.util包下的类,系统只自动导入java.lang包,所以java.util.Date要自己导包
		Date date = new Date();
		
		//date是Date类型对象的引用,将该参数放进方法println中,println内部又将date放入静态方法String.valueOf
	//中,valueOf内部又用Date类型的引用date调用toString方法,该toString方法是Date类中重写了Object类中的
		//所以输出的不是内存地址,而是日期字符串
		System.out.println(date);//Sun Oct 18 14:33:47 CST 2020
		
		//默认的日期输出方式不符合自己的要求,那可以格式化它吗?
		//即将日期类型Date,按照指定的类型转换:Date-->转换成具有一定格式的字符串-->String
		//可以利用SimpleDateFormat类进行格式化,该类是java.text包下的。专门负责日期的格式化
		/*
		 * yyyy 年(年是4位的)
		 * MM 月(月是2位的)
		 * dd 日
		 * HH 时
		 * mm 分
		 * ss 秒
		 * SSS 毫秒(毫秒是3位的,最高999,1000毫秒为1秒)
		 *  需注意的是:在日期格式中,除了y M d H m s S这些字符不能随便写,剩下的符号格式自己组织
		 *  只填一个字母,格式化输出的是年月日时分毫秒的个位,多添加一个就到十位,依次类推,添加过多只会在
		 *  个时间单位前添0,但是月份添到MMM时输出的是中文月份表示,如十月这样
		 */
		
		//下面的语句就是定义一个想要的格式模型,将日期对象材料放进去,然后输出,完成日期-->转换-->String
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");//最合适的
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd ");//
		SimpleDateFormat sdf3= new SimpleDateFormat("yy/MM/dd HH:mm:ss");//
		
		String dateStr1 = sdf1.format(date);
		String dateStr2 = sdf2.format(date);
		String dateStr3 = sdf3.format(date);
		System.out.println(dateStr1);//2020-10-18 14:57:48:614
		System.out.println(dateStr2);//2020-10-18 
		System.out.println(dateStr3);//20/10/18 14:57:48
		
		//现有一个日期字符串String,怎么转成Date型
		//String-->Date
		String time = "2028-10-01 12:15:56 666";
		
		//还是通过SimpleDateFormat方法,但是是String-->转换-->Date,所以这需要根据字符串格式
		//创建与提供的日期字符串格式的模板,之后调用转换方法才能将字符串转成Date
		//SimpleDateFormat sdf1 = new SimpleDateFormat("格式要和提供的日期字符串格式相同,不能随便填了");
		SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
		Date dateTime = sdf4.parse(time);//此时有ParseException异常未处理,解析异常,就是创建的模板和字符串格式不一致
										//可以用try/catch捕获,也可以在类名后抛出该异常,使代码运行
		
		System.out.println(dateTime);//Sun Oct 01 12:15:56 CST 2028
	}

}

2、System类中的currentTimeMillis()方法

package mJava中对日期date的处理;

/*
 * 获取自1970年1月1日到当前系统时间的总毫秒数
 * 1秒=1000毫秒
 * 
 * 			System类的相关属性和方法:
 * 			System.out   out是System类的静态变量
 * 			System.out.println()   System类中的静态变量out的返回类是PrintStream,所以println()是PrintStream类中的方法
 * 			System.gc()  建议启动垃圾回收器
 * 			System.currentTimeMillis()   获取自1970年1月1日到当前系统时间的总毫秒数
 * 			System.exit(0)   退出JVM
 */

public class DateTest02 {
	
	public static void main(String[] args) {
		
		//获取自1970年1月1日到当前系统时间的总毫秒数
		long nowTimeMillis = System.currentTimeMillis();
		System.out.println(nowTimeMillis);//1603007789976
		
		//统计print方法执行到结束耗费了多少毫秒
		//执行前统计一下
		long bigin = System.currentTimeMillis();
		print();
		//执行后统计一下
		long end = System.currentTimeMillis();
		//后前相减
		System.out.println("执行print方法耗费"+(end-bigin)+"毫秒");//每次输出都不一样的,不打印耗时0毫秒
		
		
		
	}
	
	public static void print() {
		
		for (int i = 0; i < 1000; i++) {
			System.out.println("i = "+i);
		}
		
	}

}

3、通过毫秒数构建Date对象

package n通过毫秒构建Date对象;

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

/*
 * Date类中的构造方法中传参数--long类型的毫秒数
 */

public class DateTest {
	
	public static void main(String[] args) {
		
		//如下构建的对象时间是什么?
		Date time = new Date(1);//1970-01-01 00:00:00 001
		
		//建个合适的输出(或者说格式化)时间的模板
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
		//因为本电脑北京是东8区,所以输出的时间早8个小时
		System.out.println(sdf1.format(time));//1970-01-01 08:00:00 001
		
		//获取昨天此时的日期
		Date time2 = new Date(System.currentTimeMillis()-1000*24*60*60);
		System.out.println(sdf1.format(time2));//2020-10-17 16:48:59 510

		
		
	}

}

posted @ 2021-07-23 18:06  Milen-jie  阅读(132)  评论(0编辑  收藏  举报