时间工具类(DateUtil)

public class DateUtil {
 /**
  * 名称:long2StrDate 功能:该函数将8位或12位或14位的数值型日期时间转换为10位或16位或19带格式的日期时间 型如:
  * 20040101 转换为 2004/01/01 或 200401010101 转换为 2004/01/01 01:01 或
  * 20040101010101 转换为 2004/01/01 01:01:01 输入参数:Long date 十二位或十四位的数字日期时间
  * 返回参数:String fmDate 16位或19位带格式的日期
  */
 public static String long2StrDate(String date) {
  if (date == null || date.equals(""))
   return "";
  else
   return long2StrDate(Long.valueOf(date));
 }

 public static String int2StrDate(Integer date) {
  if (date == null)
   return "";
  return long2StrDate(Long.valueOf(date));
 }

 public static String long2StrDate(Number date) {
  String fmDate = new String();
  if (date == null) {
   fmDate = "";
  } else {
   fmDate = date.toString();
   String year = "";
   String month = "";
   String day = "";
   String hour = "";
   String minute = "";
   // 日期格式不合法则转化为空串
   if (fmDate.length() < 8) {
    fmDate = "";
   }
   if (fmDate.length() >= 8) {
    year = fmDate.substring(0, 4);
    month = fmDate.substring(4, 6);
    day = fmDate.substring(6, 8);
    fmDate = year + "/" + month + "/" + day;
   }
   if ((date.toString()).length() >= 12) {
    hour = (date.toString()).substring(8, 10);
    minute = (date.toString()).substring(10, 12);
    fmDate = fmDate + " " + hour + ":" + minute;
   }
   if ((date.toString()).length() == 14) {
    fmDate = fmDate + ":" + (date.toString()).substring(12, 14);
   }
  }
  return fmDate;
 }
 public static String int2StrOnlyDate(Number date){
  String fmDate = new String();
  if (date == null) {
   fmDate = "";
  } else {
   String year = "";
   String month = "";
   String day = "";
   fmDate = date.toString();
   if (fmDate.length() < 8) {
    fmDate = "";
   }
   if (fmDate.length() >= 8) {
    year = fmDate.substring(0, 4);
    month = fmDate.substring(4, 6);
    day = fmDate.substring(6, 8);
    fmDate = year + "/" + month + "/" + day; 
   }
  }
  return fmDate;
 }
 public static String int2StrCnDate(Integer date) {
  if (date == null)
   return "";
  return long2StrCnDate(Long.valueOf(date));
 }

 public static String long2StrCnDate(Long date) {
  String fmDate = new String();
  if (date == null) {
   fmDate = "";
  } else {
   fmDate = date.toString();
   String year = "";
   String month = "";
   String day = "";
   String hour = "";
   String minute = "";
   // 日期格式不合法则转化为空串
   if (fmDate.length() < 8) {
    fmDate = "";
   }
   if (fmDate.length() >= 8) {
    year = fmDate.substring(0, 4);
    month = fmDate.substring(4, 6);
    day = fmDate.substring(6, 8);
    fmDate = year + "年" + month + "月" + day + "日";
   }
   if ((date.toString()).length() >= 10) {
    hour = (date.toString()).substring(8, 10);
    fmDate = fmDate + hour + "时";
   }

   if ((date.toString()).length() >= 12) {
    minute = (date.toString()).substring(10, 12);
    fmDate = fmDate + minute + "分";
   }

   if ((date.toString()).length() == 14) {
    fmDate = fmDate + (date.toString()).substring(12, 14) + "秒";
   }
  }
  return fmDate;
 }

 public static String long2StrCnDate(Number date) {
  String fmDate = new String();
  if (date == null) {
   fmDate = "";
  } else {
   fmDate = String.valueOf(date.longValue());
   String year = "";
   String month = "";
   String day = "";
   String hour = "";
   String minute = "";
   // 日期格式不合法则转化为空串
   if (fmDate.length() < 8) {
    fmDate = "";
   }
   if (fmDate.length() >= 8) {
    year = fmDate.substring(0, 4);
    month = fmDate.substring(4, 6);
    day = fmDate.substring(6, 8);
    fmDate = year + "年" + month + "月" + day + "日";
   }
   if ((date.toString()).length() >= 12) {
    hour = (date.toString()).substring(8, 10);
    minute = (date.toString()).substring(10, 12);
    fmDate = fmDate + hour + "时" + minute + "分";
   }
   if ((date.toString()).length() == 14) {
    fmDate = fmDate + (date.toString()).substring(12, 14) + "秒";
   }
  }
  return fmDate;
 }

 public static String long2StrCnDate(Number date, int length) {
  if (date != null) {
   Long l = Long.valueOf(String.valueOf(date.longValue()).substring(0, length));
   return long2StrCnDate(l);
  }
  return null;
 }

 /**
  * 名称:str2LongDate 功能:该函数将10位或16位或19位带格式的日期时间转换为8位或12位或14位的数值型日期时间
  * 型如:2004/01/01 转换为 20040101 或 2004/01/01 01:01 转换为 200401010101 或
  * 2004/01/01 01:01:01 转换为 20040101010101 如果 16位或19位带格式的日期时间 非法 ,则返回 0
  * 输入参数:String strFmDate 16位或19位带格式的日期时间 返回参数:Long longDate 12位或14位的数值型日期时间
  */
 public static Integer str2IntDate(String strFmDate) {
  Long date = str2LongDate(strFmDate);
  if (date == null)
   return null;
  return Integer.valueOf(date.intValue());
 }

 public static Long str2LongDate(String strFmDate) {
  if (strFmDate == null || strFmDate.length() == 0) {
   return null;
  }
  Long longDate = new Long(0);
  if (strFmDate.matches("^([12]\\d{3}/[01]\\d/[0123]\\d)$")) {
   longDate = Long.valueOf(strFmDate.replaceAll("/", ""));
  }
  if (strFmDate.matches("^([12]\\d{3}/[01]\\d/[0123]\\d\\s[012]\\d:[0-5]\\d)$")) {
   strFmDate = strFmDate.replaceAll("/", "").replaceAll(":", "").replaceAll("\\s", "");
   longDate = Long.valueOf(strFmDate);
  }
  if (strFmDate.matches("^([12]\\d{3}/[01]\\d/[0123]\\d\\s[012]\\d:[0-5]\\d:[0-5]\\d)$")) {
   strFmDate = strFmDate.replaceAll("/", "").replaceAll(":", "").replaceAll("\\s", "");
   longDate = Long.valueOf(strFmDate);
  }
  return longDate;
 }

 /**
  * 编写人: 名称:getCurrentDateView 功能:得到系统当前时间显示,格式:yyyy/mm/dd主要是为页面显示用 输入参数:
  * 返回参数:String:系统当前时间
  */
 public static String getCurrentDateView() {
  // 获得当前日期
  Calendar cldCurrent = Calendar.getInstance();
  // 获得年月日
  String strYear = String.valueOf(cldCurrent.get(Calendar.YEAR));
  String strMonth = String.valueOf(cldCurrent.get(Calendar.MONTH) + 1);
  String strDate = String.valueOf(cldCurrent.get(Calendar.DATE));
  // 整理格式
  if (strMonth.length() < 2) {
   strMonth = "0" + strMonth;
  }
  if (strDate.length() < 2) {
   strDate = "0" + strDate;
  }
  // 得出当天日期的字符串
  String StrCurrentCalendar = strYear + "/" + strMonth + "/" + strDate;
  return StrCurrentCalendar;
 }

 /**
  * 编写人: 名称:getCurrentDateTimeView 功能:得到系统当前时间显示,格式:yyyy/mm/dd hh:mm主要是为页面显示用
  * 输入参数: 返回参数:String:系统当前时间
  */
 public static String getCurrentDateTimeView() {
  // 获得当前日期
  Calendar cldCurrent = Calendar.getInstance();
  // 获得年月日
  String strYear = String.valueOf(cldCurrent.get(Calendar.YEAR));
  String strMonth = String.valueOf(cldCurrent.get(Calendar.MONTH) + 1);
  String strDate = String.valueOf(cldCurrent.get(Calendar.DATE));
  String srtHours = String.valueOf(cldCurrent.get(Calendar.HOUR_OF_DAY));
  String strMinute = String.valueOf(cldCurrent.get(Calendar.MINUTE));
  // 整理格式
  if (strMonth.length() < 2) {
   strMonth = "0" + strMonth;
  }
  if (strDate.length() < 2) {
   strDate = "0" + strDate;
  }
  if (srtHours.length() < 2) {
   srtHours = "0" + srtHours;
  }
  if (strMinute.length() < 2) {
   strMinute = "0" + strMinute;
  }
  // 得出当天日期时间的字符串
  String StrCurrentCalendar = strYear + "/" + strMonth + "/" + strDate + " " + srtHours + ":" + strMinute;
  return StrCurrentCalendar;
 }

 public static Integer getIntCurrDate() {
  // 获得当前日期
  Calendar cldCurrent = Calendar.getInstance();
  // 获得年月日
  String strYear = String.valueOf(cldCurrent.get(Calendar.YEAR));
  String strMonth = String.valueOf(cldCurrent.get(Calendar.MONTH) + 1);
  String strDate = String.valueOf(cldCurrent.get(Calendar.DATE));
  // 整理格式
  if (strMonth.length() < 2) {
   strMonth = "0" + strMonth;
  }
  if (strDate.length() < 2) {
   strDate = "0" + strDate;
  }
  return Integer.valueOf(strYear + strMonth + strDate);
 }
 
 public static Integer getIntFirstDayOfMonth() {
  // 获得当前日期
  Calendar cldCurrent = Calendar.getInstance();
  // 获得年月日
  String strYear = String.valueOf(cldCurrent.get(Calendar.YEAR));
  String strMonth = String.valueOf(cldCurrent.get(Calendar.MONTH) + 1);
  
  // 整理格式
  if (strMonth.length() < 2) {
   strMonth = "0" + strMonth;
  }
  return Integer.valueOf(strYear + strMonth + "01");
 }
 
 public static Integer getIntCurrYear() {
  // 获得当前日期
  Calendar cldCurrent = Calendar.getInstance();
  // 获得年月日
  String strYear = String.valueOf(cldCurrent.get(Calendar.YEAR));
  return Integer.valueOf(strYear);
 }

 public static Long getLongCurrDateTime() {
  // 获得当前日期
  Calendar cldCurrent = Calendar.getInstance();
  // 获得年月日
  String strYear = String.valueOf(cldCurrent.get(Calendar.YEAR));
  String strMonth = String.valueOf(cldCurrent.get(Calendar.MONTH) + 1);
  String strDate = String.valueOf(cldCurrent.get(Calendar.DATE));
  String srtHours = String.valueOf(cldCurrent.get(Calendar.HOUR_OF_DAY));
  String strMinute = String.valueOf(cldCurrent.get(Calendar.MINUTE));
  // 整理格式
  if (strMonth.length() < 2) {
   strMonth = "0" + strMonth;
  }
  if (strDate.length() < 2) {
   strDate = "0" + strDate;
  }
  if (srtHours.length() < 2) {
   srtHours = "0" + srtHours;
  }
  if (strMinute.length() < 2) {
   strMinute = "0" + strMinute;
  }
  return Long.valueOf(strYear + strMonth + strDate + srtHours + strMinute);
 }
 
 public static Long getLongCurrDateTime8() {
  // 获得当前日期
  Calendar cldCurrent = Calendar.getInstance();
  // 获得年月日
  String strYear = String.valueOf(cldCurrent.get(Calendar.YEAR));
  String strMonth = String.valueOf(cldCurrent.get(Calendar.MONTH) + 1);
  String strDate = String.valueOf(cldCurrent.get(Calendar.DATE));
  String srtHours = String.valueOf(cldCurrent.get(Calendar.HOUR_OF_DAY));
  String strMinute = String.valueOf(cldCurrent.get(Calendar.MINUTE));
  // 整理格式
  if (strMonth.length() < 2) {
   strMonth = "0" + strMonth;
  }
  if (strDate.length() < 2) {
   strDate = "0" + strDate;
  }
  if (srtHours.length() < 2) {
   srtHours = "0" + srtHours;
  }
  if (strMinute.length() < 2) {
   strMinute = "0" + strMinute;
  }
  return Long.valueOf(strYear + strMonth + strDate );
 }
 
 
 /**
  *   * 
  * 获得系统当前时间。
  * 
  * @return String 日期格式:yyyyMMddHHmm 示例:200802261310
  */
 public static String getCurrentDateTime() {
  return getDateTime(0, 0);
 }

 /**
  *  * 
  * 获得相对于系统当前时间的前(后)month个月、前(后)date个日的时间。
  * 说明:当month的值为负时,为当前时间的前month个月,当month的值为正时,为当前时间的后month个月;当date的值为负时,为当前时间的前date个日,当date的值为正时,为当前时间的后date个日。
  * 
  * @param month
  *            前(后)个月
  * @param date
  *            前(后)个日
  * @return String 日期格式:yyyyMMddHHmm 示例:200802261310
  */
 public static String getDateTime(int month, int date) {
  // 获得当前日期
  Calendar calendar = Calendar.getInstance();
  if (month != 0) {
   calendar.add(Calendar.MONTH, month);
  }
  if (date != 0) {
   calendar.add(Calendar.DATE, date);
  }
  // 获得年月日
  String strYear = String.valueOf(calendar.get(Calendar.YEAR));
  String strMonth = String.valueOf(calendar.get(Calendar.MONTH) + 1);
  String strDate = String.valueOf(calendar.get(Calendar.DATE));
  String srtHours = String.valueOf(calendar.get(Calendar.HOUR_OF_DAY));
  String strMinute = String.valueOf(calendar.get(Calendar.MINUTE));
  // 整理格式
  if (strMonth.length() < 2) {
   strMonth = "0" + strMonth;
  }
  if (strDate.length() < 2) {
   strDate = "0" + strDate;
  }
  if (srtHours.length() < 2) {
   srtHours = "0" + srtHours;
  }
  if (strMinute.length() < 2) {
   strMinute = "0" + strMinute;
  }
  return strYear + strMonth + strDate + srtHours + strMinute;
 }
 
 
 /**
  *   * 
  * 获取当前年的第一天
  * 
  * @return String
  */
 public static String getCurrentYearFirstDate(){
  
  // 获得当前日期
  Calendar calendar = Calendar.getInstance();
  
  String strYear = String.valueOf(calendar.get(Calendar.YEAR));
  
  return strYear + "01" + "01" + "00" + "00";
  
 }

 public static Long getLongCurrDateTime14() {
  return Long.valueOf(formateCalendar(Calendar.getInstance(), "yyyyMMddHHmmss"));
 }

 public static Long getLongCurrDateTime12() {
  return Long.valueOf(formateCalendar(Calendar.getInstance(), "yyyyMMddHHmm"));
 }

 public static String transferDate(Date date) {
  if (date == null)
   return null;
  SimpleDateFormat dateFormate = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
  return dateFormate.format(date);
 }

 public static Long transferDateToLong(Date date) {
  if (date == null)
   return null;
  SimpleDateFormat dateFormate = new SimpleDateFormat("yyyyMMddHHmmss");
  return Long.valueOf(dateFormate.format(date));
 }

 /**
  * yyyy/MM/dd HH:mm:ss(yyyy年,MM月,dd日,HH时,mm分,ss秒)
  * 
  * @param calendar
  * @param format
  * @return
  */
 public static String formateCalendar(Calendar calendar, String format) {
  if (calendar == null)
   return null;
  SimpleDateFormat dateFormate = new SimpleDateFormat(format);
  return dateFormate.format(calendar.getTime());
 }

 /**
  * 将形如20070730形式的日期格式,转换成2007-07-30
  */
 public static String dateFormateStr(String strDate) {
  if (strDate == null)
   return "";
  String fmDate = "";
  String year = "";
  String month = "";
  String day = "";
  if (strDate.length() >= 8) {
   year = strDate.substring(0, 4);
   month = strDate.substring(4, 6);
   day = strDate.substring(6, 8);
   fmDate = year + "-" + month + "-" + day;
  }
  return fmDate;
 }

 public static Calendar long2Calendar(Long time) {
  Calendar calendar = null;
  if (time == null) {
   calendar = Calendar.getInstance();
  } else {
   String strTime = String.valueOf(time);
   int year = 0;
   int month = 0;
   int day = 0;
   int hour = 0;
   int minute = 0;
   int sec = 0;
   if (strTime.length() < 8) {
    throw new MisException("时间格式不合法,不能少与八位数字!");
   }
   if (strTime.length() >= 8) {
    year = Integer.valueOf(strTime.substring(0, 4));
    month = Integer.valueOf(strTime.substring(4, 6)) - 1;
    day = Integer.valueOf(strTime.substring(6, 8));
   }
   if (strTime.length() >= 10) {
    hour = Integer.valueOf(strTime.substring(8, 10));
   }
   if (strTime.length() >= 12) {
    minute = Integer.valueOf(strTime.substring(10, 12));
   }
   if (strTime.length() >= 14) {
    sec = Integer.valueOf(strTime.substring(12, 14));
   }
   calendar = new GregorianCalendar(year, month, day, hour, minute, sec);
  }
  return calendar;
 }

 /**
  * 计算时间添加天数计算,给添加评标活动时使用,用于计算评标截止时间 问题编号:[fix-005]
  * 
  * @param time
  *            原来的时间
  * @param days
  *            加的天加1天 1.5一天半
  * @return
  */
 public static long calcTimeAddOfDay(long time, double days) {
  SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmm");

  java.util.Date date1 = new Date();
  try {
   date1 = format.parse(String.valueOf(time));
  } catch (ParseException e) {
   e.printStackTrace();
  }
  int addDay = (int) (days * 24);
  long Time = (date1.getTime() / 1000) + (60 * 60 * addDay);

  date1.setTime(Time * 1000);

  String mydate = format.format(date1);

  return Long.parseLong(mydate);
 }

 /**
  * 功能描述:得到给定时间减去给定天数后的时间<br>
  * 
  * @param time
  *            时间
  * @param days
  *            天数
  * @return long <BR> 作者:杨凯<BR> 时间:Jun 17, 2008 <br>
  */
 public static long getTimeSubtractOfDay(long time, int days) {
  SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmm");

  java.util.Date date1 = new Date();
  try {
   date1 = format.parse(String.valueOf(time));
  } catch (ParseException e) {
   e.printStackTrace();
  }
  int subtractDay = (int) (days * 24);
  long Time = (date1.getTime() / 1000) - (60 * 60 * subtractDay);

  date1.setTime(Time * 1000);

  String mydate = format.format(date1);

  return Long.parseLong(mydate);
 }
 /**
  * 功能描述:得到当前时间之前或之后的数据<br>
  * 
  * @param number 正数为以后时间 负数为之前时间 type 1 年 2 月 3 日 ws 返回的长度
  */
 public static long getDateToNow(int number,int type,int ws){
  Long resultLong=null;
  Calendar cal=Calendar.getInstance();
  Date date=new Date();
  cal.setTime(date);
  System.out.println(cal.getTime().toLocaleString());
  if(type==1){
   cal.add(cal.YEAR, number);
  }else if(type==2){
   cal.add(cal.MONTH, number);
  }else if(type==3){
   cal.add(cal.DAY_OF_MONTH, number);
  } 
  resultLong=transferDateToLong(cal.getTime());
  if(ws==8){
   resultLong=resultLong/(1000000);
  }
  return resultLong;
 }
 public static void main(String[] args) {
//  System.out.println(str2LongDate("2008年01月12日 14时15分", "YYYY年MM月DD日 HH时FF分"));
 }
 

  *@discription : 20090104165030时间格式转换成16时50分30秒的格式

 public static String getLongTime(Number date){  
  String fmDate = new String();
  if (date == null) {
   fmDate = "";
  } else {
   fmDate = String.valueOf(date.longValue());
   String hour = "";
   String minute = "";
   String seconds = "";
   // 日期格式不合法则转化为空串
   if (fmDate.length() < 14) {
    fmDate = "";
   }
   if (fmDate.length() == 14) {
    hour = fmDate.substring(8, 10);
    minute = fmDate.substring(10, 12);
    seconds = fmDate.substring(12, 14); 
    fmDate = hour + ":" + minute + ":" + seconds;
   }
  }
  return fmDate;
 }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hutool是一个Java开源工具类库,其中包含了丰富的常用工具类,提供了一套规范的工具类,使得开发更加简化和高效。其中也包括了时间工具类。Hutool的时间工具类主要是针对日期和时间相关的操作提供了一些便捷的方法。你可以使用Hutool的DateUtil工具类来进行日期和时间的处理。 使用Hutool的DateUtil工具类,你可以进行以下操作: 1. 获取当前日期和时间; 2. 格式化日期和时间; 3. 解析字符串为日期和时间对象; 4. 比较两个日期或时间的大小; 5. 进行日期和时间的加减运算; 6. 设置日期和时间的指定部分(如年、月、日、小时、分钟等); 7. 获取日期和时间的指定部分(如年、月、日、小时、分钟等)。 通过引入Hutool的依赖,你可以在你的项目中使用Hutool的时间工具类。在pom.xml文件中,添加以下依赖: ```xml <dependencies> <dependency> *** </dependency> </dependencies> ``` 然后,你可以使用Hutool的DateUtil工具类来进行日期和时间的处理。具体的使用方法可以参考Hutool的官方文档和API参考。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [HuTool从入门到精通1-日期和文件工具类入门](https://blog.csdn.net/weixin_44480609/article/details/125330109)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值