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

489 lines
14 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}