时间不是你想的那么简单

104 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

前言

  • 平时网站开发中经常会遇到各种的工具开发,有的时候我们也会遇到功能类似的东西比如说将时间进行特定格式的格式化、集合工具,这么我就在项目中将时间相关的通用功能进行抽离这样方便日后的维护。

日落而息

  • 在网站开发中我们经常需要统计全天内的各种请求数量或者指标数量。为了能够准确统计我们就得知道1天之内的起始和结束时间点。
// 获取当天的结束时间
public static Date getDayEnd() {
   Calendar cal = new GregorianCalendar();
   //最后1小时
   cal.set(Calendar.HOUR_OF_DAY, 23);
   //最后1分钟
   cal.set(Calendar.MINUTE, 59);
   //最后1秒钟
   cal.set(Calendar.SECOND, 59);
   return cal.getTime();
}
  • 这样就可以获取到一天中最后一刻,当然你可能说可以直接已字符的形式拼接 2022-08-20 23:59:59 , 我只能说萝卜青菜各有所爱吧。

落脚点

  • 有的时候客户想要看最近一段时间的数据,比如说想看2022-06-18为起点的两天的数据,可是现在的时间是2022-08-20 了, 那么我们该如何操作呢?
public static Date beforeAfterTime(Date date , Integer length,int type){
   Calendar calendar = Calendar.getInstance();
   calendar.setTime(date);
   calendar.set(type, calendar.get(type)+length);
   return calendar.getTime();
}

  • type用来控制前后的方向,这样我们只需要一个支点,就可以在时间的河流中任意的跳动了。

我在哪

  • 在时间的长流中你可能会有一段时间迷失自我,比如我想看下我现在身处在那一年那么你该怎么办?
public static Integer getNowYear() {
   Date date = new Date();
   GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
   gc.setTime(date);
   return Integer.valueOf(gc.get(1));
}

总结

关于时间的操作功能肯定还有各种各样的,这里只是列举出我平时经常使用的工具类。日后有需要我会继续迭代更新其他工具集合类的。