From db98bb27a9240893297531e1218239222c2ba9b1 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期二, 31 十二月 2019 11:46:13 +0800
Subject: [PATCH] Merge branch 'div' of ssh://193.112.35.168:29418/fanli-server into div
---
utils/src/main/java/org/yeshi/utils/DateUtil.java | 401 ++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 312 insertions(+), 89 deletions(-)
diff --git a/utils/src/main/java/org/yeshi/utils/DateUtil.java b/utils/src/main/java/org/yeshi/utils/DateUtil.java
index 24148cf..abeb00b 100644
--- a/utils/src/main/java/org/yeshi/utils/DateUtil.java
+++ b/utils/src/main/java/org/yeshi/utils/DateUtil.java
@@ -7,6 +7,8 @@
import java.util.Date;
import java.util.List;
+import org.yeshi.utils.entity.DateInfo;
+
public class DateUtil {
public static String dateDiff(String startTime, String endTime) {
@@ -37,7 +39,7 @@
public static String dateDiff2(Date startTime, Date endTime) throws Exception {
- String datatime = 0 + "澶�" + 0 + "灏忔椂" + 0 + "鍒嗛挓";
+ String datatime = "0鍒�";
long nm = 1000 * 60;// 涓�鍒嗛挓鐨勬绉掓暟
long nh = 1000 * 60 * 60;// 涓�灏忔椂鐨勬绉掓暟
@@ -45,26 +47,84 @@
// 鑾峰緱涓や釜鏃堕棿鐨勬绉掓椂闂村樊寮�
long diff = endTime.getTime() - startTime.getTime();
-
long day = diff / nd;// 璁$畻宸灏戝ぉ
long hour = diff % nd / nh;// 璁$畻宸灏戝皬鏃�
long min = diff % nd % nh / nm;// 璁$畻宸灏戝垎閽�
- datatime = day + "澶�" + hour + "灏忔椂" + min + "鍒嗛挓";
-
+ if (day > 0) {
+ datatime = day + "澶�" + hour + "鏃�" + min + "鍒�";
+ } else {
+ if (hour > 0) {
+ datatime = hour + "鏃�" + min + "鍒�";
+ } else {
+ if (min < 0)
+ min = 0;
+ datatime = min + "鍒�";
+ }
+ }
return datatime;
}
+
+ public static DateInfo dateDiff3(long startTime, long endTime) throws Exception {
+ long nm = 1000 * 60;// 涓�鍒嗛挓鐨勬绉掓暟
+ long nh = 1000 * 60 * 60;// 涓�灏忔椂鐨勬绉掓暟
+ long nd = 1000 * 24 * 60 * 60;// 涓�澶╃殑姣鏁�
+
+ // 鑾峰緱涓や釜鏃堕棿鐨勬绉掓椂闂村樊寮�
+ long diff = endTime - startTime;
+
+ int day = (int) (diff / nd);// 璁$畻宸灏戝ぉ
+ long hour = diff % nd / nh;// 璁$畻宸灏戝皬鏃�
+ long minute = diff % nd % nh / nm;// 璁$畻宸灏戝垎閽�
+ long second = (diff / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60); // 璁$畻宸灏戠
+
+ DateInfo dateInfo = new DateInfo();
+ dateInfo.setDay(day);
+ dateInfo.setHour(hour);
+ dateInfo.setMinute(minute);
+ dateInfo.setSecond(second);
+ return dateInfo;
+ }
+ public static String dateDiff4(Date startTime, Date endTime) throws Exception {
+
+ String datatime = "0鍒�";
+
+ long nm = 1000 * 60;// 涓�鍒嗛挓鐨勬绉掓暟
+ long nh = 1000 * 60 * 60;// 涓�灏忔椂鐨勬绉掓暟
+ long nd = 1000 * 24 * 60 * 60;// 涓�澶╃殑姣鏁�
+
+ // 鑾峰緱涓や釜鏃堕棿鐨勬绉掓椂闂村樊寮�
+ long diff = endTime.getTime() - startTime.getTime();
+ long day = diff / nd;// 璁$畻宸灏戝ぉ
+ long hour = diff % nd / nh;// 璁$畻宸灏戝皬鏃�
+ long min = diff % nd % nh / nm;// 璁$畻宸灏戝垎閽�
+
+ if (day > 0) {
+ datatime = day + "澶�";
+ } else {
+ if (hour > 0) {
+ datatime = hour + "鏃�";
+ } else {
+ if (min < 0)
+ min = 0;
+ datatime = min + "鍒�";
+ }
+ }
+ return datatime;
+ }
+
/**
* 閫氳繃鏃堕棿绉掓绉掓暟鍒ゆ柇涓や釜鏃堕棿鐨勯棿闅�
- * @param date1
- * @param date2
- * @return
- */
- public static int differentDaysByMillisecond(Date start, Date end) {
- return (int) ((end.getTime() - start.getTime()) / (1000*3600*24));
- }
-
+ *
+ * @param date1
+ * @param date2
+ * @return
+ */
+ public static int differentDaysByMillisecond(Date start, Date end) {
+ return (int) ((end.getTime() - start.getTime()) / (1000 * 3600 * 24));
+ }
+
public String transferLongToDate(String dateFormat, Long millSec) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(millSec);
@@ -104,110 +164,223 @@
return false;
}
}
-
+
+ /**
+ * 鍒ゆ柇鏄惁鍚屼竴涓湀
+ *
+ * @param date1
+ * @param date2
+ * @return
+ */
+ public static boolean isSameMonth(Date date1, Date date2) {
+ Calendar calendar1 = Calendar.getInstance();
+ calendar1.setTime(date1);
+ Calendar calendar2 = Calendar.getInstance();
+ calendar2.setTime(date2);
+ int year1 = calendar1.get(Calendar.YEAR);
+ int year2 = calendar2.get(Calendar.YEAR);
+ int month1 = calendar1.get(Calendar.MONTH);
+ int month2 = calendar2.get(Calendar.MONTH);
+ System.out.println(year1 + " " + month1);
+ System.out.println(year2 + " " + month2);
+ return calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR)
+ && calendar1.get(Calendar.MONTH) == calendar2.get(Calendar.MONTH);
+ }
+
/**
* 鎸囧畾鏃ユ湡鍔犱笂澶╂暟鍚庣殑鏃ユ湡
*
- * @param num
- * 澧炲姞鐨勫ぉ鏁�
- * @param nowDate
- * 鍒涘缓鏃堕棿
+ * @param num 澧炲姞鐨勫ぉ鏁�
+ * @param nowDate 鍒涘缓鏃堕棿
* @return
* @throws ParseException
*/
public static String plusDay(int num, String nowDate) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date currdate = format.parse(nowDate);
-
+
Calendar ca = Calendar.getInstance();
ca.setTime(currdate);
ca.add(Calendar.DATE, num);
-
+
return format.format(ca.getTime());
}
-
-
+
/**
* 鎸囧畾鏃ユ湡鍔犱笂澶╂暟鍚庣殑鏃ユ湡
*
- * @param num
- * 澧炲姞鐨勫ぉ鏁�
- * @param nowDate
- * 鍒涘缓鏃堕棿
+ * @param num 澧炲姞鐨勫ぉ鏁�
+ * @param nowDate 鍒涘缓鏃堕棿
* @return
* @throws ParseException
*/
public static String plusDay(int num, Date currdate) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-
+
Calendar ca = Calendar.getInstance();
ca.setTime(currdate);
ca.add(Calendar.DATE, num);
-
+
return format.format(ca.getTime());
}
+
+ /**
+ * 鎸囧畾鏃ユ湡鍔犱笂澶╂暟鍚庣殑鏃ユ湡
+ *
+ * @param num 澧炲姞鐨勫ぉ鏁�
+ * @param nowDate 鍒涘缓鏃堕棿
+ * @return
+ * @throws ParseException
+ */
+ public static Date plusDayDate(int num, Date currdate) {
+ Calendar ca = Calendar.getInstance();
+ ca.setTime(currdate);
+ ca.add(Calendar.DATE, num);
+ return ca.getTime();
+ }
+
+ /**
+ * 鍔犱笂鏈堜唤
+ * @param currdate
+ * @param num
+ * @return
+ */
+ public static Date plusMonths(Date currdate, int num) {
+ Calendar ca = Calendar.getInstance();
+ ca.setTime(currdate);
+ ca.add(Calendar.MONTH, num);
+ return ca.getTime();
+ }
+
+ /**
+ * 鍔犱笂骞翠唤
+ * @param currdate
+ * @param num
+ * @return
+ */
+ public static Date plusYears(Date currdate, int num) {
+ Calendar ca = Calendar.getInstance();
+ ca.setTime(currdate);
+ ca.add(Calendar.YEAR, num);
+ return ca.getTime();
+ }
+
/**
* 鎸囧畾鏃ユ湡鍑忓幓澶╂暟鍚庣殑鏃ユ湡
*
- * @param num
- * 鍑忓幓鐨勫ぉ鏁�
- * @param nowDate
- * 鍒涘缓鏃堕棿
+ * @param num 鍑忓幓鐨勫ぉ鏁�
+ * @param nowDate 鍒涘缓鏃堕棿
* @return
* @throws ParseException
*/
public static String reduceDay(int num, String nowDate) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date currdate = format.parse(nowDate);
-
+
Calendar ca = Calendar.getInstance();
ca.setTime(currdate);
ca.add(Calendar.DATE, -num); // 鏃ユ湡鍑� 濡傛灉涓嶅鍑忎細灏嗘湀鍙樺姩
-
+
return format.format(ca.getTime());
}
-
- /**
- * 璁$畻涓や釜鏃ユ湡涔嬮棿鐩稿樊鐨勫ぉ鏁�
- * @param smdate 杈冨皬鐨勬椂闂�
- * @param bdate 杈冨ぇ鐨勬椂闂�
- * @return 鐩稿樊澶╂暟
- * @throws ParseException
- * calendar 瀵规棩鏈熻繘琛屾椂闂存搷浣�
- * getTimeInMillis() 鑾峰彇鏃ユ湡鐨勬绉掓樉绀哄舰寮�
- */
- public static int daysBetween(Date smdate,Date bdate) throws ParseException
- {
- Calendar cal = Calendar.getInstance();
- cal.setTime(smdate);
- long time1 = cal.getTimeInMillis();
- cal.setTime(bdate);
- long time2 = cal.getTimeInMillis();
- long between_days=(time2-time1)/(1000*3600*24);
- return Integer.parseInt(String.valueOf(between_days));
- }
-
- /**
- * 瀛楃涓叉棩鏈熸牸寮忕殑璁$畻
- * @param smdate
- * @param bdate
- * @return
- * @throws ParseException
- */
- public static int daysBetween(String smdate,String bdate) throws ParseException{
- SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
- Calendar cal = Calendar.getInstance();
- cal.setTime(sdf.parse(smdate));
- long time1 = cal.getTimeInMillis();
- cal.setTime(sdf.parse(bdate));
- long time2 = cal.getTimeInMillis();
- long between_days=(time2-time1)/(1000*3600*24);
- return Integer.parseInt(String.valueOf(between_days));
- }
-
+
+ /**
+ * 鎸囧畾鏃ユ湡鍑忓幓澶╂暟鍚庣殑鏃ユ湡
+ *
+ * @param num 鍑忓幓鐨勫ぉ鏁�
+ * @param nowDate 鍒涘缓鏃堕棿
+ * @return
+ * @throws ParseException
+ */
+ public static Date reduceDay(int num, Date date) throws ParseException {
+ // 璁剧疆瑕佽幏鍙栧埌浠�涔堟牱鐨勬椂闂�
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+ // 鑾峰彇String绫诲瀷鐨勬椂闂�
+ String date_str = format.format(date);
+ Date currdate = format.parse(date_str);
+
+ Calendar ca = Calendar.getInstance();
+ ca.setTime(currdate);
+ ca.add(Calendar.DATE, -num); // 鏃ユ湡鍑� 濡傛灉涓嶅鍑忎細灏嗘湀鍙樺姩
+
+ return ca.getTime();
+ }
+
+ /**
+ * 鎸囧畾鏃ユ湡鍑忓幓澶╂暟鍚庣殑鏃ユ湡
+ *
+ * @param num 鍑忓幓鐨勫ぉ鏁�
+ * @param nowDate 鍒涘缓鏃堕棿
+ * @return
+ * @throws ParseException
+ */
+ public static String reduceDayTostring(int num, Date date) throws ParseException {
+ // 璁剧疆瑕佽幏鍙栧埌浠�涔堟牱鐨勬椂闂�
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+ // 鑾峰彇String绫诲瀷鐨勬椂闂�
+ String date_str = format.format(date);
+ Date currdate = format.parse(date_str);
+
+ Calendar ca = Calendar.getInstance();
+ ca.setTime(currdate);
+ ca.add(Calendar.DATE, -num); // 鏃ユ湡鍑� 濡傛灉涓嶅鍑忎細灏嗘湀鍙樺姩
+ return format.format(ca.getTime());
+ }
+
+ /**
+ * 璁$畻涓や釜鏃ユ湡涔嬮棿鐩稿樊鐨勫ぉ鏁�
+ *
+ * @param smdate 杈冨皬鐨勬椂闂�
+ * @param bdate 杈冨ぇ鐨勬椂闂�
+ * @return 鐩稿樊澶╂暟
+ * @throws ParseException calendar 瀵规棩鏈熻繘琛屾椂闂存搷浣� getTimeInMillis() 鑾峰彇鏃ユ湡鐨勬绉掓樉绀哄舰寮�
+ */
+ public static int daysBetween(Date minDate, Date maxDate) throws ParseException {
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(minDate);
+ long minTime = cal.getTimeInMillis();
+ cal.setTime(maxDate);
+ long maxTime = cal.getTimeInMillis();
+ long between_days = (maxTime - minTime) / (1000 * 3600 * 24);
+ return Integer.parseInt(String.valueOf(between_days));
+ }
+
+ /**
+ * 瀛楃涓叉棩鏈熸牸寮忕殑璁$畻
+ *
+ * @param smdate
+ * @param bdate
+ * @return 鍗曚綅澶╂暟
+ * @throws ParseException
+ */
+ public static int daysBetween2(Date minDate, Date maxDate) throws ParseException {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ return daysBetween(sdf.format(minDate), sdf.format(maxDate));
+ }
+
+ /**
+ * 瀛楃涓叉棩鏈熸牸寮忕殑璁$畻
+ *
+ * @param smdate
+ * @param bdate
+ * @return
+ * @throws ParseException
+ */
+ public static int daysBetween(String minDate, String maxDate) throws ParseException {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(sdf.parse(minDate));
+ long minTime = cal.getTimeInMillis();
+ cal.setTime(sdf.parse(maxDate));
+ long maxTime = cal.getTimeInMillis();
+ long between_days = (maxTime - minTime) / (1000 * 3600 * 24);
+ return Integer.parseInt(String.valueOf(between_days));
+ }
+
/**
* 杩斿洖涓棿鏃ユ湡
+ *
* @param startTime
* @param endTime
* @return
@@ -233,23 +406,73 @@
}
return listDate;
}
-
-
- /**
- * @param args
- * @throws ParseException
- * format() 瀵规棩鏈熻繘琛屾牸寮忓寲澶勭悊
- * parse() 灏嗘棩鏈熻缃负date绫诲瀷
- */
- public static void main(String[] args) throws ParseException {
- // TODO Auto-generated method stub
- SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Date d1=sdf.parse("2016-09-08 00:00:00");
- Date d2=sdf.parse("2016-09-08 00:00:00");
-
- System.out.println(daysBetween(d1,d2));
- System.out.println(daysBetween("2016-09-08 10:10:10","2016-09-29 00:00:00"));
- }
+ /**
+ * 闅忔満鍑忓幓鍑犲垎閽�
+ *
+ * @param date
+ * @param min 闅忔満娣诲姞鐨勫垎閽熸暟
+ * @return
+ */
+ public static Date reduceRandomMinute(Date date, int min) {
+ long rand = (long) (Math.random() * 1000 * 60 * min);
+ long time = date.getTime() - rand;
+ return new Date(time);
+ }
+
+ /**
+ * 璁$畻涓ゆ椂闂存湀宸�
+ *
+ * @param startDate <String>
+ * @param endDate <String>
+ * @return int
+ * @throws ParseException
+ */
+ public static int getMonthSpace(String startDate, String endDate) throws ParseException {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+ return getMonthSpace(sdf.parse(startDate), sdf.parse(endDate));
+ }
+
+ /**
+ * 璁$畻涓ゆ椂闂存湀宸�
+ *
+ * @param startDate <String>
+ * @param endDate <String>
+ * @return int
+ * @throws ParseException
+ */
+ public static int getMonthSpace(Date startDate, Date endDate) {
+ Calendar start = Calendar.getInstance();
+ Calendar end = Calendar.getInstance();
+ start.setTime(startDate);
+ end.setTime(endDate);
+ int result = end.get(Calendar.MONTH) - start.get(Calendar.MONTH);
+ int month = (end.get(Calendar.YEAR) - start.get(Calendar.YEAR)) * 12;
+ return Math.abs(month + result);
+ }
+
+ public static Date getTodayStartTime() {
+ Calendar todayStart = Calendar.getInstance();
+ todayStart.set(Calendar.HOUR_OF_DAY,0);
+ todayStart.set(Calendar.MINUTE,0);
+ todayStart.set(Calendar.SECOND,0);
+ todayStart.set(Calendar.MILLISECOND,0);
+ return todayStart.getTime();
+ }
+
+ public static Date getTodayEndTime() {
+ Calendar todayEnd = Calendar.getInstance();
+ todayEnd.set(Calendar.HOUR_OF_DAY,23);
+ todayEnd.set(Calendar.MINUTE,59);
+ todayEnd.set(Calendar.SECOND,59);
+ todayEnd.set(Calendar.MILLISECOND,999);
+ return todayEnd.getTime();
+ }
+
+
+ public static void main(String[] args) throws ParseException {
+ System.out.println(getMonthSpace("2012-02", "2012-02"));
+ }
+
}
\ No newline at end of file
--
Gitblit v1.8.0