日期计算小技巧
若需计算 给定两个日期计算 相距天数或者小时的场景可使用时间戳来简化计算
概念
时间戳:timestamp,编程语言中的时间戳单位是毫秒,unix时间戳单位是秒,能够表示的范围都是从1970-01-01 到2038-01-19
实例
Java中获取当前时间戳的两种方式
# System类
long timestamp = System.currentTimeMillis();
# Data类
long timestamp = new Date().getTime();
获取指定日期时间戳
long timestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("1970-1-1 00:00:01").getTime();
// timestamp: -28799000
发现 1970-1-1 00:00:01的时间戳不是0,于是想着怎么知道时间戳为0的日期,就有了下面的代码
String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(0L);
// data: 1970-01-01 08:00:00
发现java中时间戳为0的时间是:1970-01-01 08:00:00,其他语言目前还没测试过
其他关于Java日期使用,观摩这篇大佬的博客
使用
那么就可以通过时间戳相减来知道两个日期相间距的时间
long time1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2020-1-1 00:00:00").getTime();
long time2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2021-1-1 00:00:00").getTime();
System.out.println(time2-time1); // 31622400000 毫秒数
System.out.println((time2-time1)/1000); // 31622400 秒数
System.out.println((time2-time1)/(1000*60)); // 527040 分钟数
System.out.println((time2-time1)/(1000*60*24)); // 21960 小时数
System.out.println((time2-time1)/(1000*60*60*24)); // 366 天数