hz-zhhq-app-service/greenH5modul/.svn/pristine/0c/0cac23e0bdbe5d8c3533ebacae2...

489 lines
14 KiB
Plaintext
Raw Normal View History

2025-01-21 13:12:35 +08:00
package com.nationalelectric.greenH5.utils;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class DateUtil
{
public static final String Y_M_DH_MI_S="yyyy-MM-dd HH:mm:ss";
public static final String Y_M_D="yyyy-MM-dd";
public static final String YMD_ZH="yyyy年MM月dd日";
public static final String YMDH_ZH="yyyy年MM月dd日HH时";
public static final String MD_ZH="MM月dd日";
public static final String MDH_ZH="MM月dd日HH时";
public static final String MDHM_ZH="MM月dd日HH时mm分";
public static final String DHS_ZH="dd日HH时ss分";
public static final String Y_M_D_H="yyyy-MM-dd HH";
public static final String Y_M_D_H_MI="yyyy-MM-dd HH:mm";
public static final String YMDH="yyyyMMddHH";
public static final String YMD="yyyyMMdd";
public static final SimpleDateFormat FORMAT_Y_M_DH_MI_S=new SimpleDateFormat(Y_M_DH_MI_S);
public static final SimpleDateFormat FORMAT_Y_M_D = new SimpleDateFormat(Y_M_D);
public static final SimpleDateFormat FORMAT_YMD_ZH = new SimpleDateFormat(YMD_ZH);
public static final SimpleDateFormat FORMAT_MD_ZH = new SimpleDateFormat(MD_ZH);
public static final SimpleDateFormat FORMAT_MDH_ZH = new SimpleDateFormat(MDH_ZH);
public static final SimpleDateFormat FORMAT_MDHM_ZH = new SimpleDateFormat(MDHM_ZH);
public static final SimpleDateFormat FORMAT_DHS_ZH = new SimpleDateFormat(DHS_ZH);
public static final SimpleDateFormat FORMAT_Y_M_D_H=new SimpleDateFormat(Y_M_D_H);
public static final SimpleDateFormat FORMAT_Y_M_D_H_MI=new SimpleDateFormat(Y_M_D_H_MI);
public static final SimpleDateFormat FORMAT_YMDH = new SimpleDateFormat(YMDH);
public static final SimpleDateFormat FORMAT_YMD = new SimpleDateFormat(YMD);
public static String now()
{
return FORMAT_Y_M_DH_MI_S.format(new Date());
}
public static String now(SimpleDateFormat format)
{
return format.format(new Date());
}
/**
* 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss
*
* @param strDate
* @return
*/
public static Date strToDateLong(String strDate,String format) {
SimpleDateFormat formatter = new SimpleDateFormat(format);
ParsePosition pos = new ParsePosition(0);
Date strtodate = formatter.parse(strDate, pos);
return strtodate;
}
public static String dateToStr(java.util.Date dateDate,String format) {
SimpleDateFormat formatter = new SimpleDateFormat(format);
String dateString = formatter.format(dateDate);
return dateString;
}
/**
* 获取昨天日期
* @return YYYY-MM-DD
*/
public static String yesterday()
{
return getDateByDaysAndYeas(FORMAT_Y_M_D.format(new Date()),-1,0,FORMAT_Y_M_D);
}
/**
* 获取明天日期
* @return YYYY-MM-DD
*/
public static String tomorrowDay()
{
return getDateByDaysAndYeas(FORMAT_Y_M_D.format(new Date()),1,0,FORMAT_Y_M_D);
}
/**
* 获取昨天日期
* @return YYYY-MM-DD
*/
public static String yesterday(SimpleDateFormat format)
{
return getDateByDaysAndYeas(format.format(new Date()),1,0,format);
}
/**
* 获取第二天日期
* @return YYYY-MM-DD String
*/
public static String nextDay(String tringdateString,SimpleDateFormat format)
{
return getDateByDaysAndYeas(tringdateString,1,0,format);
}
/**
* 获取下一周日期
* @param dateString
* @param format
* @return
*/
public static String nextWeekDay(String dateString,
SimpleDateFormat format) {
return getDateByDaysAndYeas(dateString,7,0,format);
}
/**
* 获取日期
* @return YYYY-MM-DD
*/
public static String getDateString(Date date,SimpleDateFormat format)
{
if(date==null)return null;
return format.format(date);
}
/**
* 获取其他时间日期
* @param date format格式日期
* @param days 相差天数
* @param years 相差年数
* @param format 日期格式 如YYYY-MM-DD
* @return
*/
public static String getDateByDaysAndYeas(String date, int days, int years,
SimpleDateFormat format) {
String result=null;
Date d;
Calendar c=null;
try {
d = format.parse(date);
c=Calendar.getInstance();
c.setTime(d);
c.add(Calendar.DATE, days);
c.add(Calendar.YEAR, years);
result=format.format(c.getTime());
} catch (java.text.ParseException e) {
}
return result;
}
/**
* 获取其他时间日期
* @param date 日期
* @param days 相差天数
* @return
*/
public static Date getDateByDays(Date date, int days) {
Date d=null;
Calendar c=Calendar.getInstance();
c.setTime(date);
if(days!=0)
c.add(Calendar.DATE, days);
d=c.getTime();
return d;
}
/**
* 获取其他时间日期
* @param date 日期
* @param years 相差年数
* @return
*/
public static Date getDateByYear(Date date, int year) {
Date d=null;
Calendar c=Calendar.getInstance();
c.setTime(date);
if(year!=0)
c.add(Calendar.YEAR, year);
d=c.getTime();
return d;
}
/**
* 获取时间差(已经被日期格式的替代)
* @param rq2
* @param rq1
* @param format
* @return
*/
@Deprecated
public static int getDayPass(String rq2, String rq1,SimpleDateFormat format) {
Date d1,d2;
int days=0;
try {
d2 = format.parse(rq2);
d1 = format.parse(rq1);
long diff=d2.getTime()-d1.getTime();
days=(int)(diff/(24*60*60*1000));
} catch (ParseException e) {
}
return days;
}
/**
* 获取时间差
* @param date1 起始日期
* @param date2 结束日期
* @return
*/
public static int getDayPass(Date date1, Date date2) {
int days=0;
long diff=date2.getTime()-date1.getTime();
days=(int)(diff/(24*60*60*1000));
return days;
}
// 获得本周一的日期
public static String getMondayOFWeek(SimpleDateFormat format) {
Calendar currentDate = Calendar.getInstance();
int dayOfWeek = currentDate.get(Calendar.DAY_OF_WEEK); //取得一周的第几天(第一天为周日)
if(dayOfWeek==1)//为周日时取6天前做周一
{
dayOfWeek=dayOfWeek-7;
}
else//不为周日时取dayOfWeek-1天为周一如周六为7取7-1=6天前为周一
{
dayOfWeek--;
}
currentDate.add(Calendar.DATE, dayOfWeek);
Date monday = currentDate.getTime();
String preMonday = format.format(monday);
return preMonday;
}
// 获取当月第一天
public static String getFirstDayOfMonth(SimpleDateFormat format) {
String str = "";
Calendar lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
str = format.format(lastDate.getTime());
return str;
}
// 计算当月最后一天,返回字符串
public static String getLastDayOfMonth(SimpleDateFormat format) {
String str = "";
Calendar lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
lastDate.add(Calendar.MONTH, 1);// 加一个月变为下月的1号
lastDate.add(Calendar.DATE, -1);// 减去一天,变为当月最后一天
str = format.format(lastDate.getTime());
return str;
}
// 下月某天
public static String getNextMonthDay(String dateString,SimpleDateFormat format) {
String str = "";
Calendar c = Calendar.getInstance();
c.setTime(getDateByString(dateString,format));
c.add(Calendar.MONTH, 1);// 增一个月
str = format.format(c.getTime());
return str;
}
public static Date getDateByString(String dateString,SimpleDateFormat format){
Date d=null;
try {
d = format.parse(dateString);
} catch (java.text.ParseException e) {
}
return d;
}
// 上月第一天
public static String getPreviousMonthFirst(SimpleDateFormat format) {
String str = "";
Calendar lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
lastDate.add(Calendar.MONTH, -1);// 减一个月变为下月的1号
str = format.format(lastDate.getTime());
return str;
}
// 获得上月最后一天的日期
public static String getPreviousMonthEnd(SimpleDateFormat format) {
String str = "";
Calendar lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天
lastDate.add(Calendar.DATE, -1);// 减一天,也就是上月最后一天
str = format.format(lastDate.getTime());
return str;
}
/**
* 获得系统当前年度第一天的日期
* @param SimpleDateFormat format
*/
public static String getCurrentYearFirst(SimpleDateFormat format) {
Calendar cd = Calendar.getInstance();
cd.set(Calendar.DAY_OF_YEAR, 1);// 把日期设为当年第一天
Date d=cd.getTime();
String str = format.format(d);
return str;
}
/**
* 获得当前日期所属年度第一天的日期
* @param SimpleDateFormat format
*/
public static Date getYearFirstDate(Date date1) {
Calendar c = Calendar.getInstance();
c.setTime(date1);
c.set(Calendar.DAY_OF_YEAR, 1);// 把日期设为当年第一天
return c.getTime();
}
/**
* 加几天
*/
public static DateTime addDays(int i,Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, i);
return new DateTime(c.getTime());
}
public static void main(String [] arg){
System.err.println(DateTime.dateToStr(DateTime.strToDateLong4("2019-11-11 10:10"),"yyyy-MM-dd"));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
SimpleDateFormat Hsdf = new SimpleDateFormat("HH");
System.err.println(DateTime.dateToStr(DateTime.strToDateLong4("2019-11-11 10:10"),"MM-dd"));
// System.out.println(getMondayOFWeek(DateUtil.FORMAT_YMD));
// System.out.println(getPreviousMonthFirst(DateUtil.FORMAT_YMD));
//System.out.println(nextDay("20110303",DateUtil.FORMAT_YMD));
//System.out.println(getNextMonthDay("20110328",DateUtil.FORMAT_YMD));
/*System.out.println("20110101".substring(0,4)
+"20110101".substring(4,6)
+"20110101".substring(6,8));*/
//System.out.println(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));
//System.out.println(Calendar.getInstance().get(Calendar.HOUR)==0);
}
public static Date nextDay(Date date) {
Calendar c=Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, 1);
return c.getTime();
}
/**
* 获取下一周日期
* @param dateString
* @param format
* @return
*/
public static Date nextWeekDay(Date date) {
Calendar c=Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, 7);
return c.getTime();
}
public static Date WeekDay(Date date) {
Calendar c=Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE,0);
return c.getTime();
}
/**
* 获取上周日期
* */
public static Date lastWeekDay(Date date) {
Calendar c=Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, -7);
return c.getTime();
}
public static Date passHours(Date date, int hour) {
Calendar c=Calendar.getInstance();
c.setTime(date);
c.add(Calendar.HOUR, hour);
return c.getTime();
}
// 下月某天
public static Date nextMonthDay(Date date) {
Calendar c=Calendar.getInstance();
c.setTime(date);
c.add(Calendar.MONTH, 1);
return c.getTime();
}
public static long getSecondDiff(Date d1,Date d2){
long diff=Math.abs(d1.getTime()-d2.getTime());//无论谁先谁后,计算差值。
return diff/1000;
}
public static long getMinuteDiff(Date d1,Date d2){
long diff=Math.abs(d1.getTime()-d2.getTime());//无论谁先谁后,计算差值。
return diff/(1000*60);
}
public static List<Date> findDates(Date dBegin, Date dEnd) {
List<Date> lDate = new ArrayList<Date>();
lDate.add(dBegin);
Calendar calBegin = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calBegin.setTime(dBegin);
Calendar calEnd = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calEnd.setTime(dEnd);
// 测试此日期是否在指定日期之后
while (dEnd.after(calBegin.getTime())) {
// 根据日历的规则,为给定的日历字段添加或减去指定的时间量
calBegin.add(Calendar.DAY_OF_MONTH, 1);
lDate.add(calBegin.getTime());
}
return lDate;
}
public static List<String> getBetweenDays(String stime,String etime){
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Date sdate=null;
Date eDate=null;
List<String> list= null;
try {
sdate=df.parse(stime);
eDate=df.parse(etime);
Calendar c = Calendar.getInstance();
list=new ArrayList<String>();
while (sdate.getTime()<=eDate.getTime()) {
list.add(df.format(sdate));
//System.out.println(df.format(sdate));
c.setTime(sdate);
c.add(Calendar.DATE, 1); // 日期加1天
sdate = c.getTime();
}
} catch (ParseException e) {
}
return list;
}
//返回周几
public static int getWeek(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
int weekday = c.get(Calendar.DAY_OF_WEEK);
int week = 0;
if (weekday == 1) {
week = 7;
} else if (weekday == 2) {
week = 1;
} else if (weekday == 3) {
week = 2;
} else if (weekday == 4) {
week = 3;
} else if (weekday == 5) {
week = 4;
} else if (weekday == 6) {
week = 5;
} else if (weekday == 7) {
week = 6;
}
return week;
}
/**
* 获取时间差(已经被日期格式的替代)
* @param rq2
* @param rq1
* @param format
* @return
*/
public static int getMPass(String rq2, String rq1,SimpleDateFormat format) {
Date d1,d2;
int days=0;
try {
d2 = format.parse(rq2);
d1 = format.parse(rq1);
long diff=d2.getTime()-d1.getTime();
days=(int)(diff/(60*1000));
} catch (ParseException e) {
}
return days;
}
}