两个类:
Date类:获取系统当前日期,属于java.util.Date包内
SimpleDateFormat类:将当前日期进行格式化处理,yyy-MM-dd HH:mm:ss SSS
代码演示:
Date转String
package com.lbj.javase.date;import java.text.SimpleDateFormat;
import java.util.Date;public class DateTest01 {public static void main(String[] args) {//获取系统当前时间(精确到毫秒)Date nowTime = new Date();//直接调用无参数构造方法就行//java.util.Date已经被重写//输出的应该不是一个对象的内存地址,应该是一个日期字符串System.out.println(nowTime);//Tue Mar 16 12:30:21 CST 2021//日期可以格式化吗?//SimpleDateFormat是java.text包下的。专门负责日期格式化//将日期类型date,按照指定的格式进行转换:Date--》String//注意:在日期格式中,除了y M d H m s S 这些字符不能随便写之外,剩下的符号格式自己随意组织SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");String nowTimeStr=simpleDateFormat.format(nowTime);System.out.println(nowTimeStr);//2021-03-16 12:58:51 549}
}
代码演示:
Stirng转Date
package com.lbj.javase.date;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class DateTest01 {public static void main(String[] args) throws ParseException {//假设现在有一个日期字符串String,怎么转换成Date类型//String转DateString s="2008-08-08 08:08:08 888";//注意:(括号里面的格式不能随便写,要和日期字符串保持相同)
//否则,会出现异常SimpleDateFormat s2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");Date date=s2.parse(s);System.out.println(date);//Fri Aug 08 08:08:08 CST 2008}
}
代码演示:
用end时间-begin时间,得出运行时总花费的时间(可以用来测试系统某段程序的运行时间优化)
package com.lbj.javase.date;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class DateTest01 {public static void main(String[] args) throws ParseException {//获取自1970年1月1日 00:00:00 000 到当前系统时间的总毫秒数//1秒=1000毫秒Long nowTimeMills=System.currentTimeMillis();System.out.println(nowTimeMills);//1615873008226Long begin=System.currentTimeMillis();print();Long end=System.currentTimeMillis();System.out.println("print()方法运行总花费毫秒数为:"+(end-begin));//print()方法运行总花费毫秒数为:5}private static void print() {for (int i = 0; i <1000000000; i++) {//如果不用打印出来的话,计算机运行是非常快的,而且每次运行的时候由于虚拟机调度的问题,花费时间并不是不变的//System.out.println("i="+i);}}
}
简单总结一下System类的相关属性和方法:
后面有括号说明是一个方法名,后面没有括号,说明是一个属性
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
代码演示:
通过毫秒构造Date对象
package com.lbj.javase.date;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class DateTest01 {public static void main(String[] args) throws ParseException {//这个是时间是什么时间?//看帮助文档得知,此时的参数是一个毫秒//且帮助文档显示,当里面添加参数的时候,是从1970-01-01 00:00:00 00x 开始计算Date date=new Date(1);SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");String s=sdf.format(date);//由于本地电脑定位的时区是东八区,因此按照SUN公司的格林威治时间来算System.out.println(s);//1970-01-01 08:00:00 001}
}
代码演示:
获取昨天的此时时间
package com.lbj.javase.date;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;class DateTest01 {public static void main(String[] args) throws ParseException {//这个是时间是什么时间?//看帮助文档得知,此时的参数是一个毫秒//且帮助文档显示,当里面添加参数的时候,是从1970-01-01 00:00:00 00x 开始计算Date date=new Date(1);SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");String s=sdf.format(date);//由于本地电脑定位的时区是东八区,因此按照SUN公司的格林威治时间来算System.out.println(s);//1970-01-01 08:00:00 001//获取此时昨天的时间Date date1=new Date(System.currentTimeMillis()-1000*60*60*24);String s1=sdf.format(date1);System.out.println(s1);//2021-03-15 14:05:29 607}
}