From 55075b2bbf2b6c41ec6ce831fb2b08666dbf4bf5 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期三, 07 五月 2025 18:52:26 +0800 Subject: [PATCH] 最新版本541200007 --- server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java | 552 +++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 434 insertions(+), 118 deletions(-) diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java index e76940e..cc3026f 100644 --- a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java +++ b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java @@ -86,7 +86,7 @@ date = date.substring(0,i); } } - //TimeZone tz = TimeZone.getTimeZone("GMT-01"); + //TimeZone tz = TimeZone.getTimeZone("GMT-01");2024-10-21T10:40:04+08:00 DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"); // DateFormat df = new SimpleDateFormat("2023-12-08 T 09:25:54.698+08:00"); df.setTimeZone(tz); @@ -318,6 +318,89 @@ } /** + * 鑾峰彇X鏈堜唤涔嬪墠鐨勬湀浠芥暟 + * @param currentDate + * @param month + * @return + */ + public static List<String> getBeforMonth(Date currentDate , Integer month) { + SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy"); + SimpleDateFormat sdfMonth = new SimpleDateFormat("MM"); + int currentYear = Integer.parseInt(sdfYear.format(currentDate)); + int currentMonth = Integer.parseInt(sdfMonth.format(currentDate)); + List<String> list = new ArrayList<>(); + + for (int i = 0; i < month; i++) { + int tempYear = currentYear; + int tempMonth = currentMonth - i; + + if (tempMonth <= 0) { + tempYear--; + tempMonth += 12; + } + list.add(tempYear +"-" + StringUtils.leftPad(Integer.toString(tempMonth),2,"0")); + } + return list; + } + /** + * 鑾峰彇X鏈堜唤涔嬪墠鐨勬湀浠芥暟 + * @param currentDate + * @param month + * @return + */ + public static List<String> getDateListBeforMonth(Date currentDate , Integer month) { + SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy"); + SimpleDateFormat sdfMonth = new SimpleDateFormat("MM"); + int currentYear = Integer.parseInt(sdfYear.format(currentDate)); + int currentMonth = Integer.parseInt(sdfMonth.format(currentDate)); + List<String> list = new ArrayList<>(); + + for (int i = 0; i < month; i++) { + int tempYear = currentYear; + int tempMonth = currentMonth - i; + + if (tempMonth <= 0) { + tempYear--; + tempMonth += 12; + } + list.add(tempYear +"-" + StringUtils.leftPad(Integer.toString(tempMonth),2,"0")); + } + return list; + } + + public static List<String> getBeforDays(Date currentDate,Integer days){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(currentDate); + Date endDate = currentDate; // 鑾峰彇褰撳墠鏃ユ湡 + calendar.add(Calendar.DAY_OF_YEAR, -days); // 寰�鍓嶆帹7澶� + Date startDate = calendar.getTime(); // 鑾峰彇鎺ㄧ畻鍚庣殑鏃ユ湡 + List<String> list = new ArrayList<>(); + while (startDate.before(endDate)) { + calendar.add(Calendar.DAY_OF_YEAR, 1); // 鑾峰彇涓嬩竴澶╂棩鏈� + startDate = calendar.getTime(); + list.add(DateUtil.dateToString(startDate,"yyyy-MM-dd")); + System.out.println(DateUtil.dateToString(startDate,"yyyy-MM-dd")); + } + return list; + } + public static List<Date> getDateListBeforDays(Date currentDate,Integer days){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(currentDate); + Date endDate = currentDate; // 鑾峰彇褰撳墠鏃ユ湡 + calendar.add(Calendar.DAY_OF_YEAR, -days); // 寰�鍓嶆帹7澶� + Date startDate = calendar.getTime(); // 鑾峰彇鎺ㄧ畻鍚庣殑鏃ユ湡 + List<Date> list = new ArrayList<>(); + while (startDate.before(endDate)) { + calendar.add(Calendar.DAY_OF_YEAR, 1); // 鑾峰彇涓嬩竴澶╂棩鏈� + startDate = calendar.getTime(); + list.add(startDate); + } + return list; + } + + /** * Descrption:鍙栧緱褰撳墠鏃ユ湡鏃堕棿,鏍煎紡涓�:YYYYMMDDHHMISS * * @return String @@ -395,7 +478,7 @@ * @return String * @throws Exception */ - public static String getNowPlusTime() throws Exception { + public static String getNowPlusTime() { String nowDate = ""; try { java.sql.Date date = null; @@ -413,7 +496,7 @@ * @return String * @throws Exception */ - public static String getPlusTime(Date date) throws Exception { + public static String getPlusTime(Date date) { if (date == null) return null; try { @@ -588,6 +671,27 @@ } catch (Exception e) { throw e; } + } + public static String getTimeStrBySecond(Long seconds) { + String returnTime ="0鏃�0鍒�0绉�"; + long longHour = 0; + long longMinu = 0; + long longSec =seconds ==null?0:seconds; + try { + if (longSec == 0) { + returnTime = "0鏃�0鍒�0绉�"; + return returnTime; + } + longHour = longSec / 3600; // 鍙栧緱灏忔椂鏁� + longSec = longSec % 3600; // 鍙栧緱浣欎笅鐨勭 + longMinu = longSec / 60; // 鍙栧緱鍒嗘暟 + longSec = longSec % 60; // 鍙栧緱浣欎笅鐨勭 + returnTime = longHour + "鏃�" + longMinu + "鍒�" + longSec + "绉�"; + return returnTime; + } catch (Exception e) { + e.printStackTrace(); + } + return returnTime; } /** @@ -961,105 +1065,6 @@ } } - /** - * 灏嗘寚瀹氭牸寮忕殑瀛楃涓茶浆鎹负鏃ユ湡鍨� - * - * @param strDate - * - 鏃ユ湡 - * @param oracleFormat - * --oracle鍨嬫棩鏈熸牸寮� - * @return 杞崲寰楀埌鐨勬棩鏈� - */ - @SuppressWarnings("unchecked") - public static Date stringToDate(String strDate, String oracleFormat) { - if (strDate == null) - return null; - Hashtable<Integer, String> h = new Hashtable<Integer, String>(); - String javaFormat = new String(); - String s = oracleFormat.toLowerCase(); - if (s.indexOf("yyyy") != -1) - h.put(new Integer(s.indexOf("yyyy")), "yyyy"); - else if (s.indexOf("yy") != -1) - h.put(new Integer(s.indexOf("yy")), "yy"); - if (s.indexOf("mm") != -1) - h.put(new Integer(s.indexOf("mm")), "MM"); - - if (s.indexOf("dd") != -1) - h.put(new Integer(s.indexOf("dd")), "dd"); - if (s.indexOf("hh24") != -1) - h.put(new Integer(s.indexOf("hh24")), "HH"); - if (s.indexOf("mi") != -1) - h.put(new Integer(s.indexOf("mi")), "mm"); - if (s.indexOf("ss") != -1) - h.put(new Integer(s.indexOf("ss")), "ss"); - - int intStart = 0; - while (s.indexOf("-", intStart) != -1) { - intStart = s.indexOf("-", intStart); - h.put(new Integer(intStart), "-"); - intStart++; - } - - intStart = 0; - while (s.indexOf("/", intStart) != -1) { - intStart = s.indexOf("/", intStart); - h.put(new Integer(intStart), "/"); - intStart++; - } - - intStart = 0; - while (s.indexOf(" ", intStart) != -1) { - intStart = s.indexOf(" ", intStart); - h.put(new Integer(intStart), " "); - intStart++; - } - - intStart = 0; - while (s.indexOf(":", intStart) != -1) { - intStart = s.indexOf(":", intStart); - h.put(new Integer(intStart), ":"); - intStart++; - } - - if (s.indexOf("骞�") != -1) - h.put(new Integer(s.indexOf("骞�")), "骞�"); - if (s.indexOf("鏈�") != -1) - h.put(new Integer(s.indexOf("鏈�")), "鏈�"); - if (s.indexOf("鏃�") != -1) - h.put(new Integer(s.indexOf("鏃�")), "鏃�"); - if (s.indexOf("鏃�") != -1) - h.put(new Integer(s.indexOf("鏃�")), "鏃�"); - if (s.indexOf("鍒�") != -1) - h.put(new Integer(s.indexOf("鍒�")), "鍒�"); - if (s.indexOf("绉�") != -1) - h.put(new Integer(s.indexOf("绉�")), "绉�"); - - int i = 0; - while (h.size() != 0) { - Enumeration e = h.keys(); - int n = 0; - while (e.hasMoreElements()) { - i = ((Integer) e.nextElement()).intValue(); - if (i >= n) - n = i; - } - String temp = (String) h.get(new Integer(n)); - h.remove(new Integer(n)); - - javaFormat = temp + javaFormat; - } - SimpleDateFormat df = new SimpleDateFormat(javaFormat); - - Date myDate = new Date(); - try { - myDate = df.parse(strDate); - } catch (Exception e) { - // e.printStackTrace(); - return null; - } - - return myDate; - } public static Date StringToDate(String DATE1) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -1325,6 +1330,23 @@ } } return length; + } + + /** + * 寰楀埌X鍒嗛挓鍚庣殑鏃堕棿(鏃堕棿鏍煎紡) + * + * @param date + * @param minute + * @return + */ + public static Date getXMinuteAfterDate(Date date, int minute) { + if(date ==null){ + date = new Date(); + } + Calendar now = Calendar.getInstance(); + now.setTime(date); + now.set(Calendar.MINUTE, now.get(Calendar.MINUTE) + minute); + return now.getTime(); } /** @@ -1673,6 +1695,56 @@ return ""; } } + public static List<Date> getThisMonthDateList() { + List<Date> dateList = new ArrayList<>(); + try { + Calendar calendar = Calendar.getInstance(); + int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); + calendar.set(Calendar.HOUR,0); + calendar.set(Calendar.MINUTE,0); + calendar.set(Calendar.SECOND,0); + calendar.set(Calendar.MILLISECOND,0); + for (int i = 0; i < daysInMonth; i++) { + calendar.set(Calendar.DAY_OF_MONTH,i+1); + dateList.add(calendar.getTime()); + } + } catch (Exception e) { + return null; + } + return dateList; + } + public static List<Date> getThisYearMonthList() { + List<Date> dateList = new ArrayList<>(); + try { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.DAY_OF_MONTH,1); + calendar.set(Calendar.HOUR,0); + calendar.set(Calendar.MINUTE,0); + calendar.set(Calendar.SECOND,0); + calendar.set(Calendar.MILLISECOND,0); + for (int i = 0; i < 12; i++) { + calendar.set(Calendar.MONTH,i); + dateList.add(calendar.getTime()); + } + } catch (Exception e) { + return null; + } + return dateList; + } + public static Date getFirstThisYearDate() { + try { + return sdfShort.parse( getNowShortDate().substring(0, 4) + "0101"); + } catch (Exception e) { + return null; + } + } + public static String getFirstDayCurrentMonth() { + try { + return getDateLong(new Date()).substring(0, 7) + "-01"; + } catch (Exception e) { + return ""; + } + } /** * 灏唝yyyMM鍚勫紡杞崲鎴恲yyy骞碝M鏈堟牸寮� @@ -1922,14 +1994,6 @@ // StringUtil.getNotNullStr(request.getParameter(strParamName)); // return getDateByString(strStr); // } - /** - * 寰楀埌褰撳墠鏃ユ湡锛屾牸寮弝yyy-MM-dd銆� - * - * @return String 鏍煎紡鍖栫殑鏃ユ湡瀛楃涓� - */ - public static String getCurrDate() { - return getFormattedDate(getDateByString("")); - } /** * 寰楀埌褰撳墠鏃ユ湡锛屾牸寮弝yyy-MM-dd銆� @@ -1992,6 +2056,17 @@ public static String getCurrDateTime() { Timestamp date = new Timestamp(System.currentTimeMillis()); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); + return formatter.format(date); + } + + /** + * 寰楀埌褰撳墠鏃ユ湡鏃堕棿,鏍煎紡涓簓yyy-MM-dd. + * + * @return String + */ + public static String getCurrDate() { + Timestamp date = new Timestamp(System.currentTimeMillis()); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); return formatter.format(date); } @@ -2857,16 +2932,28 @@ // System.out.println(DateUtil.afterMinutesDate(-5)); - Date startTime = DateUtil.StringToDate("2024-05-01 08:00:00" ,"yyyy-MM-dd HH:mm:ss"); - Date endTime = DateUtil.StringToDate("2024-05-01 17:00:00" ,"yyyy-MM-dd HH:mm:ss"); - Long intervalTime = 35L; + System.out.println(getPlusTime2(DateUtil.addMonthToDate(new Date(),-1))); +// System.out.println(DateUtil.getBeforMonthStr(new Date(),12)); +// List<Date> list =getThisMonthDateList(); +// for(Date d :list){ +// System.out.println(getPlusTime2(d)); +// } +// List<Date> list1 =getThisYearMonthList(); +// for(Date d :list1){ +// System.out.println(getPlusTime2(d)); +// } - DateUtil.checkDateInterval( startTime.toInstant() - .atZone(ZoneId.systemDefault()) - .toLocalDateTime(), endTime.toInstant() - .atZone(ZoneId.systemDefault()) - .toLocalDateTime(),intervalTime); +// Date startTime = DateUtil.StringToDate("2024-05-01 08:00:00" ,"yyyy-MM-dd HH:mm:ss"); +// Date endTime = DateUtil.StringToDate("2024-05-01 17:00:00" ,"yyyy-MM-dd HH:mm:ss"); +// Long intervalTime = 35L; +// +// +// DateUtil.checkDateInterval( startTime.toInstant() +// .atZone(ZoneId.systemDefault()) +// .toLocalDateTime(), endTime.toInstant() +// .atZone(ZoneId.systemDefault()) +// .toLocalDateTime(),intervalTime); } catch (Exception ex) { ex.printStackTrace(); @@ -3059,10 +3146,29 @@ calendar.add(Calendar.DATE, days);// return calendar.getTime(); } + public static Date addMonthToDate(Date date, int month) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.MONTH, month);// + return calendar.getTime(); + } + public static Date addYearToDate(Date date, int year) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.YEAR, year);// + return calendar.getTime(); + } public static String afterDateToStr(Integer days){ Date date = new Date(); Long l = date.getTime()+1000*60*60*24*days; + date.setTime(l); + return DateToStr(date, "yyyyMMdd"); + } + + public static String afterDateHourToStr(Integer hour){ + Date date = new Date(); + Long l = date.getTime()+1000*60*60*hour; date.setTime(l); return DateToStr(date, "yyyyMMdd"); } @@ -3293,6 +3399,216 @@ } + /** + * 鑾峰彇X澶╁悗鐨勬棩鏈� + * @param date + * @param beforDays 鏄庡ぉ -1 鏄ㄥぉ 1 + * @return + */ + public static String getBeforDay(Date date,Integer beforDays){ + ZonedDateTime zonedDateTime = date.toInstant().atZone(ZoneId.systemDefault()); + // 杞崲涓簀ava.time.LocalDate,璁$畻x澶╃殑鏃ユ湡 + LocalDate dateBeforeDay = zonedDateTime.toLocalDate().minusDays(beforDays); + return dateBeforeDay.toString(); + } + + + /** + * 鑾峰彇X澶╁悗鐨勬棩鏈� + * @param date + * @param beforMonths 涓嬫湀 -1 涓婃湀 1 + * @return + */ + public static String getBeforMonthStr(Date date,Integer beforMonths){ + ZonedDateTime zonedDateTime = date.toInstant().atZone(ZoneId.systemDefault()); + // 杞崲涓簀ava.time.LocalDate,璁$畻x澶╃殑鏃ユ湡 + LocalDate dateBeforeDay = zonedDateTime.toLocalDate().minusMonths(beforMonths); + return dateBeforeDay.toString(); + } + + + /** + * 鑾峰彇X骞村悗鐨勬棩鏈� + * @param date + * @param beforMonths 涓嬪勾 -1 涓婂勾 1 + * @return + */ + public static String getBeforYear(Date date,Integer beforMonths){ + ZonedDateTime zonedDateTime = date.toInstant().atZone(ZoneId.systemDefault()); + // 杞崲涓簀ava.time.LocalDate,璁$畻x澶╃殑鏃ユ湡 + LocalDate dateBeforeDay = zonedDateTime.toLocalDate().minusYears(beforMonths); + return dateBeforeDay.toString(); + } + + + + // 鑾峰彇鏈懆鐨勫紑濮嬫椂闂� + public static Date getBeginDayOfWeek(int addYears) { + Date date = new Date(); + if (date == null) { + return null; + } + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + cal.set(Calendar.YEAR,getNowYearNum()+addYears); + int dayofweek = cal.get(Calendar.DAY_OF_WEEK); + if (dayofweek == 1) { + dayofweek += 7; + } + cal.add(Calendar.DATE, 2 - dayofweek); + return getDayStartTime(cal.getTime()); + } + + // 鑾峰彇鏈懆鐨勭粨鏉熸椂闂� + public static Date getEndDayOfWeek(int addYears) { + Calendar cal = Calendar.getInstance(); + cal.setTime(getBeginDayOfWeek(addYears)); + cal.add(Calendar.DAY_OF_WEEK, 6); + Date weekEndSta = cal.getTime(); + return getDayEndTime(weekEndSta); + } + + // 鑾峰彇涓婂懆鐨勫紑濮嬫椂闂� + public static Date getBeginDayOfLastWeek() { + Date date = new Date(); + if (date == null) { + return null; + } + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + cal.set(Calendar.YEAR,getNowYearNum()); + int dayofweek = cal.get(Calendar.DAY_OF_WEEK); + if (dayofweek == 1) { + dayofweek += 7; + } + cal.add(Calendar.DATE, 2 - dayofweek - 7); + return getDayStartTime(cal.getTime()); + } + + // 鑾峰彇涓婂懆鐨勭粨鏉熸椂闂� + public static Date getEndDayOfLastWeek() { + Calendar cal = Calendar.getInstance(); + cal.setTime(getBeginDayOfLastWeek()); + cal.add(Calendar.DAY_OF_WEEK, 6); + Date weekEndSta = cal.getTime(); + return getDayEndTime(weekEndSta); + } + + // 鑾峰彇鏈湀鐨勫紑濮嬫椂闂� + public static Date getBeginDayOfMonth(int addYears) { + Calendar calendar = Calendar.getInstance(); + calendar.set(getNowYearNum()+addYears, getNowMonthNum() - 1, 1); + return getDayStartTime(calendar.getTime()); + } + + // 鑾峰彇鏈湀鐨勭粨鏉熸椂闂� + public static Date getEndDayOfMonth(int addYears) { + Calendar calendar = Calendar.getInstance(); + calendar.set(getNowYearNum()+addYears, getNowMonthNum() - 1, 1); + int day = calendar.getActualMaximum(5); + calendar.set(getNowYearNum()+addYears, getNowMonthNum() - 1, day); + return getDayEndTime(calendar.getTime()); + } + + // 鑾峰彇涓婃湀鐨勫紑濮嬫椂闂� + public static Date getBeginDayOfLastMonth() { + Calendar calendar = Calendar.getInstance(); + calendar.set(getNowYearNum(), getNowMonthNum() - 2, 1); + return getDayStartTime(calendar.getTime()); + } + + // 鑾峰彇涓婃湀鐨勭粨鏉熸椂闂� + public static Date getEndDayOfLastMonth() { + Calendar calendar = Calendar.getInstance(); + calendar.set(getNowYearNum(), getNowMonthNum() - 2, 1); + int day = calendar.getActualMaximum(5); + calendar.set(getNowYearNum(), getNowMonthNum() - 2, day); + return getDayEndTime(calendar.getTime()); + } + + // 鑾峰彇鏈勾鐨勫紑濮嬫椂闂� + public static Date getBeginDayOfYear(int addYears) { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.YEAR, getNowYearNum()+addYears); + cal.set(Calendar.MONTH, Calendar.JANUARY); + cal.set(Calendar.DATE, 1); + return getDayStartTime(cal.getTime()); + } + + // 鑾峰彇鏈勾鐨勭粨鏉熸椂闂� + public static java.util.Date getEndDayOfYear(int addYears){ + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.YEAR, getNowYearNum()+addYears); + cal.set(Calendar.MONTH, Calendar.DECEMBER); + cal.set(Calendar.DATE, 31); + return getDayEndTime(cal.getTime()); + } + + // 鑾峰彇褰撳ぉ鐨勫紑濮嬫椂闂� + public static java.util.Date getDayBegin() { + Calendar cal = new GregorianCalendar(); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + return cal.getTime(); + } + + // 鑾峰彇褰撳ぉ鐨勭粨鏉熸椂闂� + public static java.util.Date getDayEnd() { + Calendar cal = new GregorianCalendar(); + cal.set(Calendar.HOUR_OF_DAY, 23); + cal.set(Calendar.MINUTE, 59); + cal.set(Calendar.SECOND, 59); + return cal.getTime(); + } + + + // 鑾峰彇鏌愪釜鏃ユ湡鐨勫紑濮嬫椂闂� + public static Timestamp getDayStartTime(Date d) { + Calendar calendar = Calendar.getInstance(); + if (null != d) + calendar.setTime(d); + calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), + calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0); + calendar.set(Calendar.MILLISECOND, 0); + return new Timestamp(calendar.getTimeInMillis()); + } + + // 鑾峰彇鏌愪釜鏃ユ湡鐨勭粨鏉熸椂闂� + public static Timestamp getDayEndTime(Date d) { + Calendar calendar = Calendar.getInstance(); + if (null != d) + calendar.setTime(d); + calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), + calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59); + calendar.set(Calendar.MILLISECOND, 999); + return new Timestamp(calendar.getTimeInMillis()); + } + + + // 鑾峰彇浠婂勾鏄摢涓�骞� + public static Integer getNowYearNum() { + Date date = new Date(); + GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); + gc.setTime(date); + return Integer.valueOf(gc.get(1)); + } + + // 鑾峰彇鏈湀鏄摢涓�鏈� + public static int getNowMonthNum() { + Date date = new Date(); + GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); + gc.setTime(date); + return gc.get(2) + 1; + } + + public static int getNowDayNum(){ + // 鑾峰彇Calendar瀹炰緥 + Calendar calendar = Calendar.getInstance(); + return calendar.get(Calendar.DAY_OF_MONTH); + } + } \ No newline at end of file -- Gitblit v1.9.3