java中对日期的处理
这个案例最主要掌握:
知识点1:怎么获取系统当前时间
知识点2:String --> Date
知识点3:Date --> String:
package com.javaSe.date; import java.text.SimpleDateFormat; import java.util.Date; /* java中对日期的处理 这个案例最主要掌握: 知识点1:怎么获取系统当前时间 知识点2:String --> Date 知识点3:Date --> String */ public class DateTest01 { public static void main(String[] args) throws Exception{ // 获取系统当前时间 // 直接调用无参数构造方法就行。 Date nowTime = new Date(); // java.util.Date类的toString()方法已经被重写了。 // 输出的应该不是一个对象的内存地址,应该是一个日期字符串。 // System.out.println(nowTime); // Thu Jul 02 20:59:00 CST 2020 // 日期可以格式化吗? // 将日期类型Date,按照指定的格式进行转换:Date -- 转换成具有一定格式的日期字符串 --> String // SimpleDateFormat是java.text包下的。专门负责日期格式化的。 /* yyyy 年(年是4位) MM 月(月是2位) dd 日(日是2位) HH 时 mm 分 ss 秒 sss 毫秒(毫秒是3位,最高999,1000毫秒代表1秒) 注意:在日期格式中,除了 y M d H m s S 这些字符不能随便写之外,剩下的符号格式自己随意组织。 */ SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); String date = sf.format(nowTime); System.out.println(date); // 假设现在有一个日期字符串String,怎么转换成Date类型? String time = "2020-07-02 21:19:50 265"; // SimpleDateFormat sdf = new SimpleDateFormat("格式不能随便写,要和字符串格式相同"); // 注意:字符串的日期格式和SimpleDateFormat对象指定的日期格式要一致。不然会出现异常:java.text.ParseException SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); Date dateTime = sdf.parse(time); System.out.println(dateTime);// Thu Jul 02 21:19:50 CST 2020 } }
获取1970年1月1日到现在时间的毫秒数:
package com.javaSe.date; /* 获取自1970年1月1日 00:00:00 000 到当前系统时间的总毫秒数 1秒 = 1000毫秒 简单总结一下System类的相关属性和方法: System.out [out是System类的静态变量] System.out.println() [println()方法不是System类的,是PrintStream类中的方法] System.gc() 建议启动java垃圾回收器 System.currentTimeMillis() 获取自1970年1月1日到系统当前时间毫秒数 System.exit(0) 退出JVM */ public class DateTest02 { public static void main(String[] args) { long nowTimeMillis = System.currentTimeMillis(); System.out.println(nowTimeMillis);//1593696591719 // 统计一个方法耗时 // 在调用目标方法之前记录一个毫秒数 long begin = System.currentTimeMillis(); print(); // 执行完成目标方法之后记录一个毫秒数 long end = System.currentTimeMillis(); System.out.println("耗费"+ (end - begin) +"毫秒"); } // 需求:统计一个方法执行所耗费时长 public static void print(){ for (int i = 0; i < 1000000000; i++) { //System.out.println("i =" + i); } } }
如何获取昨天的时间:
package com.javaSe.date; import java.text.SimpleDateFormat; import java.util.Date; public class DateTest03 { public static void main(String[] args) { // 这个时间是什么时间? // 1970-01-01 00:00:00 001 Date date = new Date(1);// 注意:参数是一个毫秒 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); String time = sdf.format(date); // 北京市东8区。差8个小时 我们与格林威治的时间有时差 早8个小时 System.out.println(time); // 1970-01-01 08:00:00 001 // 获取昨天的此时的时间 Date date1 = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24); String time1 = sdf.format(date1); System.out.println(time1); // 2020-07-01 22:06:19 208 } }
如何获取前一个月、1天、1年的时间:
package com.javaSe.date; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateTest04 { public static void main(String[] args) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar c = Calendar.getInstance(); //过去一年 c.setTime(new Date()); c.add(Calendar.YEAR, -1); Date y = c.getTime(); String year = format.format(y); System.out.println("过去一年:"+year); //过去一月 c.setTime(new Date()); c.add(Calendar.MONTH, -1); Date m = c.getTime(); String mon = format.format(m); System.out.println("过去一个月:"+mon); //过去一天 c.setTime(new Date()); c.add(Calendar.DATE, - 1); Date d = c.getTime(); String day = format.format(d); System.out.println("过去一天:"+day); } }
如何根据一个人的出生年月计算他的岁数:
package com.javaSe.date; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateTest05 { public static void main(String[] args) throws Exception{ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); // simpleDateFormat.parse("1996-01-22") 解析字符串 生成Date类型时间 Date date = simpleDateFormat.parse("1996-01-22"); c.setTime(date); // 将Date转换成毫秒 System.out.println(c.getTimeInMillis()); // 用当前毫秒数 - 解析的毫秒数 = 这个人的岁数年 long age = System.currentTimeMillis() - c.getTimeInMillis(); // 利用公式计算出这个人当前年龄为: System.out.println(age / 365 / 24 / 60 / 60 / 1000); } }