Dateutil

  1. package com.tongyue.hot.web;  
  2.   
  3. import java.util.Calendar;  
  4. import java.util.Date;  
  5. import java.util.GregorianCalendar;  
  6.   
  7. public class Dateutil {  
  8.   
  9.  /** 
  10.  * 取得当前日期是多少周 
  11.  * 
  12.  * @param date 
  13.  * @return 
  14.  */  
  15.  public static int getWeekOfYear(Date date) {  
  16.  Calendar c = new GregorianCalendar();  
  17.  c.setFirstDayOfWeek(Calendar.MONDAY);  
  18.  c.setMinimalDaysInFirstWeek(7);  
  19.  c.setTime (date);  
  20.   
  21.  return c.get(Calendar.WEEK_OF_YEAR);  
  22.  }  
  23.   
  24.  /** 
  25.  * 得到某一年周的总数 
  26.  * 
  27.  * @param year 
  28.  * @return 
  29.  */  
  30.  public static int getMaxWeekNumOfYear(int year) {  
  31.  Calendar c = new GregorianCalendar();  
  32.  c.set(year, Calendar.DECEMBER, 31235959);  
  33.   
  34.  return getWeekOfYear(c.getTime());  
  35.  }  
  36.   
  37.  /** 
  38.  * 得到某年某周的第一天 
  39.  * 
  40.  * @param year 
  41.  * @param week 
  42.  * @return 
  43.  */  
  44.  public static Date getFirstDayOfWeek(int year, int week) {  
  45.  Calendar c = new GregorianCalendar();  
  46.  c.set(Calendar.YEAR, year);  
  47.  c.set (Calendar.MONTH, Calendar.JANUARY);  
  48.  c.set(Calendar.DATE, 1);  
  49.   
  50.  Calendar cal = (GregorianCalendar) c.clone();  
  51.  cal.add(Calendar.DATE, week * 7);  
  52.   
  53.  return getFirstDayOfWeek(cal.getTime ());  
  54.  }  
  55.   
  56.  /** 
  57.  * 得到某年某周的最后一天 
  58.  * 
  59.  * @param year 
  60.  * @param week 
  61.  * @return 
  62.  */  
  63.  public static Date getLastDayOfWeek(int year, int week) {  
  64.  Calendar c = new GregorianCalendar();  
  65.  c.set(Calendar.YEAR, year);  
  66.  c.set(Calendar.MONTH, Calendar.JANUARY);  
  67.  c.set(Calendar.DATE, 1);  
  68.   
  69.  Calendar cal = (GregorianCalendar) c.clone();  
  70.  cal.add(Calendar.DATE , week * 7);  
  71.   
  72.  return getLastDayOfWeek(cal.getTime());  
  73.  }  
  74.   
  75.  /** 
  76.  * 取得指定日期所在周的第一天 
  77.  * 
  78.  * @param date 
  79.  * @return 
  80.  */  
  81.  public static Date getFirstDayOfWeek(Date date) {  
  82.  Calendar c = new GregorianCalendar();  
  83.  c.setFirstDayOfWeek(Calendar.MONDAY);  
  84.  c.setTime(date);  
  85.  c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday  
  86.  return c.getTime ();  
  87.  }  
  88.   
  89.  /** 
  90.  * 取得指定日期所在周的最后一天 
  91.  * 
  92.  * @param date 
  93.  * @return 
  94.  */  
  95.  public static Date getLastDayOfWeek(Date date) {  
  96.  Calendar c = new GregorianCalendar();  
  97.  c.setFirstDayOfWeek(Calendar.MONDAY);  
  98.  c.setTime(date);  
  99.  c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday  
  100.  return c.getTime();  
  101.  }  
  102.    
  103.  /** 
  104.  * 取得当前日期所在周的第一天 
  105.  * 
  106.  * @param date 
  107.  * @return 
  108.  */  
  109.  public static Date getFirstDayOfWeek() {  
  110.  Calendar c = new GregorianCalendar();  
  111.  c.setFirstDayOfWeek(Calendar.MONDAY);  
  112.  c.setTime(new Date());  
  113.  c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday  
  114.  return c.getTime ();  
  115.  }  
  116.   
  117.  /** 
  118.  * 取得当前日期所在周的最后一天 
  119.  * 
  120.  * @param date 
  121.  * @return 
  122.  */  
  123.  public static Date getLastDayOfWeek() {  
  124.  Calendar c = new GregorianCalendar();  
  125.  c.setFirstDayOfWeek(Calendar.MONDAY);  
  126.  c.setTime(new Date());  
  127.  c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday  
  128.  return c.getTime();  
  129.  }  
  130.  /* 
  131.   * 
  132.   
  133.  public static void main(String[] args) { 
  134.   int year = 2009; 
  135.   int week = 1; 
  136.  
  137.   // 以2006-01-02位例 
  138.   Calendar c = new GregorianCalendar(); 
  139.   c.set(2009, Calendar.DECEMBER, 7); 
  140.   Date d = c.getTime(); 
  141.  
  142.   System.out.println("current date = " + d); 
  143.   System.out.println("getWeekOfYear = " + getWeekOfYear(d)); 
  144.   System.out.println("getMaxWeekNumOfYear = " + getMaxWeekNumOfYear(year)); 
  145.   System.out.println("getFirstDayOfWeek = " + getFirstDayOfWeek(year, week)); 
  146.   System.out.println("getLastDayOfWeek = " + getLastDayOfWeek(year, week)); 
  147.   System.out.println ("getFirstDayOfWeek = " + getFirstDayOfWeek(d)); 
  148.   System.out.println("getLastDayOfWeek = " + getLastDayOfWeek(d)); 
  149.   System.out.println ("getFirstDayOfWeek = " + getFirstDayOfWeek()); 
  150.   System.out.println("getLastDayOfWeek = " + getLastDayOfWeek()); 
  151.   } 
  152.  */  

### Hutool DateUtil 使用指南 Hutool 是一个功能强大的 Java 工具类库,其中的 `DateUtil` 提供了丰富的日期时间处理功能,能够简化常见的日期操作任务,例如时间格式化、时间差计算、时间单位转换等。以下是一些常用的 `DateUtil` 使用方法及示例。 #### 时间差计算 `DateUtil.between` 方法可用于计算两个日期之间的时间差,支持多种时间单位,包括周、天、小时、分钟、秒和毫秒。例如: ```java Date startDate = DateUtil.parse("2021-04-20 02:00:00"); Date endDate = DateUtil.parse("2021-04-21 05:10:00"); long week = DateUtil.between(startDate, endDate, DateUnit.WEEK); // 相差周数 long day = DateUtil.between(startDate, endDate, DateUnit.DAY); // 相差天数 long hour = DateUtil.between(startDate, endDate, DateUnit.HOUR); // 相差小时数 long minute = DateUtil.between(startDate, endDate, DateUnit.MINUTE); // 相差分钟数 long second = DateUtil.between(startDate, endDate, DateUnit.SECOND); // 相差秒数 long millis = DateUtil.between(startDate, endDate, DateUnit.MS); // 相差毫秒数 ``` 该方法能够帮助开发者快速获取两个时间点之间的间隔,适用于统计用户活跃时间、任务执行周期等场景[^1]。 #### 时间格式化与解析 `DateUtil.parse` 方法可以将字符串解析为 `Date` 对象,支持多种日期时间格式。例如: ```java Date date = DateUtil.parse("2023-04-01 12:30:45"); ``` 此外,`DateUtil.format` 方法可将 `Date` 或 `LocalDateTime` 对象格式化为指定的字符串格式,例如: ```java String formattedDate = DateUtil.format(date, "yyyy-MM-dd HH:mm:ss"); ``` 这种格式化方式在日志记录、数据展示等场景中非常实用。 #### 时间单位转换 `DateUtil` 提供了将秒数转换为更易读的时间格式的功能。例如,使用 `DateUtil.secondToTime(int)` 方法可以将秒数转换为“小时:分钟:秒”的格式: ```java String timeFormat = DateUtil.secondToTime(3661); // 输出 "01:01:01" ``` 该方法适用于视频时长、任务执行时间等需要时间格式化输出的场景[^2]。 #### 日期增减与比较 `DateUtil` 提供了便捷的方法对日期进行增减操作,例如: ```java Date tomorrow = DateUtil.offsetDay(new Date(), 1); // 获取明天的日期 Date oneHourLater = DateUtil.offsetHour(new Date(), 1); // 获取一小时后的时间 ``` 这些方法可用于定时任务调度、活动时间安排等场景。 #### 日期判断 `DateUtil` 还支持判断两个日期是否是同一天、是否在同一个星期、是否在同一个月份等: ```java boolean isSameDay = DateUtil.isSameDay(date1, date2); boolean isSameWeek = DateUtil.isSameWeek(date1, date2); boolean isSameMonth = DateUtil.isSameMonth(date1, date2); ``` 此类功能适用于统计用户签到、分析用户行为周期等需求。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值