Java中日期类Date的使用
日期类Date的使用
(1)日期类Date的实例化及输出转换:
测试代码:
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test01 {
public static void main(String[] args) throws Exception{
//实例化一个日期对象
Date nowTime = new Date();
//输出日期,Date对象已经重写了toString()方法
System.out.println(nowTime); //Wed Jul 15 08:27:35 CST 2020
//上面输出的日期虽然信息很全,但样式不太好看,日期可以格式化吗?也就是可以转换吗?
//SimpleDateFormat是java.text包下的,专门负责日期格式化的。
//将日期格式化,需按照指定的格式进行转换:Date--指定日期格式字符串--String
/*
* yyyy 年(年是4位)
* MM 月(月是2位)
* dd 日
* HH 时
* mm 分
* ss 秒
* SSS 毫秒
* 注意:在日期格式中,除了y M d H m s S这些字母不能随便写之外,其他字母符号可以随便组织编写
* */
//标准的格式:"yyyy-MM-dd HH:mm:ss SSS"
String str = "yyyy-MM-dd HH:mm:ss SSS";
SimpleDateFormat sdf = new SimpleDateFormat(str);
//调用sdf的format()方法
String nowTimeString = sdf.format(nowTime);
System.out.println(nowTimeString); //2020-07-15 08:27:35 963
//上面讲的是Date类型转换成String字符串型表示
//那一个日期字符串可以转换成Date类型吗?当然可以
String nowTimeString1 = "2008/08/08 08:08:08";
//SimpleDateFormat sdf1 = new SimpleDateFormat("这里的格式现在不能乱写,需和上面要转换的格式相同");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); //建议不要加毫秒,不然会影响数据,你可以尝试一下
//String --> Date需格式匹配,不然会报异常,系统要求抛出异常
Date nowTime1 = sdf1.parse(nowTimeString1);
System.out.println(nowTime1); //Fri Aug 08 08:08:08 CST 2008
}
}
(2)获取自1970年1月1日 00:00:00 000 到当前系统时间的 总毫秒数。
1秒 = 1000毫秒。
使用System.currentTimeMillis()方法,静态无参数方法,返回long类型数字。
使用此方法,可以测试一个函数的执行时间。
测试代码:
public class Test02 {
public static void main(String[] args) {
long nowTimeMillis = System.currentTimeMillis();
System.out.println(nowTimeMillis); //1594774591280
//此方法可以测试一个方法的执行时间
long startTime = System.currentTimeMillis();
doSome();
long endTime = System.currentTimeMillis();
System.out.println("doSome()方法执行所花时间为:" + (endTime-startTime) + "毫秒"); //377毫秒,每次运行时间可能不一样
}
private static void doSome() {
for (int i = 0; i < 10000; i++) {
System.out.println(i);
}
}
}
(3)关于Date对象的有参数构造方法:
new Date(long ms) 参数ms是自从1970/01/01 00:00:00 000开始计时的毫秒数
测试代码:
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test03 {
public static void main(String[] args) {
Date time = new Date(1); //这里的1,是1毫秒
String str = "yyyy/MM/dd HH:mm:ss SSS";
SimpleDateFormat sdf = new SimpleDateFormat(str);
String timeString = sdf.format(time);
System.out.println(timeString); //1970/01/01 08:00:00 001 其中多了8个小时,是因为时差问题
// 那这个构造方法有什么用呢?我怎么知道指定多少毫秒呢?看下面问题
// 获取昨天的此时的时间
Date yesterdayTime = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
String timeString1 = sdf.format(yesterdayTime);
System.out.println(timeString1);
//同样也能获取去年的此时时间
//这里不再演示,上面减去的数乘365即可
}
}
总结:
(1)获取系统当前时间:Date nowTime = new Date();
System.out.println(nowTime); //Wed Jul 15 08:27:35 CST 2020
(2)将Date对象格式化成我们想要的格式:
String str = “yyyy-MM-dd HH:mm:ss SSS”;
SimpleDateFormat sdf = new SimpleDateFormat(str);
String nowTimeString = sdf.format(nowTime);
System.out.println(nowTimeString); //2020-07-15 08:27:35 963
(3)获取自1970年1月1日 00:00:00 000 到当前系统时间的 总毫秒数。使用System.currentTimeMillis()方法,静态无参数方法,返回long类型数字。
可以测试一个函数的执行时间。
(4)Date对象的有参数构造方法:new Date(long ms);
参数ms是自从1970/01/01 00:00:00 000开始计时的毫秒数。
可以获取昨天的此时的时间。
本文地址:https://blog.csdn.net/pipizhen_/article/details/107353213
下一篇: Java中equals和==的区别