packagecom.ztesoft.iotcmp.util;importcom.ztesoft.zsmart.core.log.ZSmartLogger;importjava.sql.Timestamp;importjava.text.SimpleDateFormat;importjava.text.ParseException;importjava.util.Calendar;importjava.util.Date;/*** 时间日期转换工具类
*/

public classDateTimeUtil {private static final ZSmartLogger logger = ZSmartLogger.getLogger(DateTimeUtil.class);/*** 取得当前的日期时间字符串YYYYMMDD24HHMISS

*

*@returnString 取得当前的日期时间字符串YYYYMMDD24HHMISS*/

public staticString getDateTime24String() {

String format= "yyyyMMdd24HHmmss";

SimpleDateFormat sdf= newSimpleDateFormat(format);return sdf.format(newDate());

}/*** 取得指定时间日期时间字符串

*@paramdate yyyy-MM-dd HH:mm:ss格式

*

*@returnString yyyyMMdd24HHmmss 格式*/

public static String getDateTimeChangeString(String date) throwsParseException {

SimpleDateFormat sdfBefore= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date date1=sdfBefore.parse(date);

SimpleDateFormat sdfAfter= new SimpleDateFormat("yyyyMMdd24HHmmss");returnsdfAfter.format(date1);

}/*** 获取两个日期对象相差天数

*

*@paramdate1 日期对象

*@paramdate2 日期对象

*@returnint 日差值*/

public static intcompareDay(java.util.Date date1, java.util.Date date2) {if (date1 == null || date2 == null)return 0;long time1 =date1.getTime();long time2 =date2.getTime();long margin = time1 -time2;/*转化成天数*/

int ret = (int) Math.floor((double) margin / (1000 * 60 * 60 * 24));returnret;

}/*** 获取两个日期对象相差天数

*

*@paramdate1str String yyyy-MM-dd

*@paramdate2str String yyyy-MM-dd

*@returnint 日差值*/

public static intcompareDay(String date1str, String date2str) {if (date1str == null || date2str == null)return 0;

java.util.Date date1= toDate(date1str, "00:00:01");

java.util.Date date2= toDate(date2str, "00:00:00");returncompareDay(date1, date2);

}/** * 获取两个日期对象相差的小时数

* @param date1 日期对象

* @param date2 日期对象

* @return int 相差小时数*/

public static intcompareHour(java.util.Date date1, java.util.Date date2) {if (date1 == null || date2 == null)return 0;long time1 =date1.getTime();long time2 =date2.getTime();long margin = time1 -time2;int ret = (int) Math.floor((double) margin / (1000 * 60 * 60 * 24));returnret;

}/*** 获取两个日期对象相差的分钟数

*

*@paramdate1 日期对象

*@paramdate2 日期对象

*@returnint 相差分钟数*/

public static intcompareMinute(java.util.Date date1, java.util.Date date2) {if (date1 == null || date2 == null)return 0;long time1 =date1.getTime();long time2 =date2.getTime();long margin = time1 -time2;int ret = (int) Math.floor((double) margin / (1000 * 60 * 60 * 24));returnret;

}/*** 获取两个日期对象相差月数

*

*@paramdate1 日期对象

*@paramdate2 日期对象

*@returnint 月份差值*/

public static intcompareMonth(java.util.Date date1, java.util.Date date2) {if (date1 == null || date2 == null)return 0;int year =compareYear(date1, date2);

Calendar calendar=Calendar.getInstance();

calendar.setTime(date1);int month1 =calendar.get(Calendar.MONTH);

calendar.setTime(date2);int month2 =calendar.get(Calendar.MONTH);/*进行比较*/

return 12 * year + (month1 -month2);

}/*** 获取两个日期对象相差秒数

*

*@paramdate1 日期对象

*@paramdate2 日期对象

*@returnint 相差秒数*/

public static intcompareSecond(java.util.Date date1, java.util.Date date2) {if (date1 == null || date2 == null)return 0;long time1 =date1.getTime();long time2 =date2.getTime();long margin = time1 -time2;

Long longValue= new Long(margin / (1000));returnlongValue.intValue();

}/*** 获取两个日期对象相差年数

*

* @parma date1 日期对象

*@paramdate2 日期对象

*@returnint 年份差值*/

public static intcompareYear(java.util.Date date1, java.util.Date date2) {if (date1 == null || date2 == null)return 0;

Calendar calendar=Calendar.getInstance();

calendar.setTime(date1);int year1 =calendar.get(Calendar.YEAR);

calendar.setTime(date2);int year2 =calendar.get(Calendar.YEAR);return year1 -year2;

}public staticString converTime(String str, String format) {

SimpleDateFormat df= new SimpleDateFormat("yyyyMMddhhmmss");

String dateString=str;try{

Date date=df.parse(dateString);

dateString=toDateTimeString(date, format);

}catch(Exception ex) {

ex.printStackTrace();

}returndateString;

}public staticString converDate(String str, String format) {

SimpleDateFormat df= new SimpleDateFormat("yyyyMMdd");

String dateString=str;try{

Date date=df.parse(dateString);

dateString=toDateTimeString(date, format);

}catch(Exception ex) {

ex.printStackTrace();

}returndateString;

}/*** 得到指定年月的最后一天.

*

*@parammonthStr 年月字符串,格式:yyyy-MM*/

public staticString endDayOfMoth(String monthStr) {int day[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int year = Integer.parseInt(monthStr.substring(0, 4));int month = Integer.parseInt(monthStr.substring(5));int endDay =day[month];if (month == 2) {if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {

endDay= 29;

}

}return endDay + "";

}/*** 获取当前日期

*

*@return当前日期*/

public static intgetCurrentDay() {

Calendar calendar=Calendar.getInstance();int day =calendar.get(Calendar.DAY_OF_MONTH);returnday;

}/*** 获取当前时

*

*@return当前时间,如:23点,0点,1点等*/

public static intgetCurrentHour() {

Calendar calendar=Calendar.getInstance();int hour =calendar.get(Calendar.HOUR_OF_DAY);returnhour;

}/*** 获取当前分

*

*@return当前分*/

public static intgetCurrentMinute() {

Calendar calendar=Calendar.getInstance();int hour =calendar.get(Calendar.MINUTE);returnhour;

}/*** 获取当前月份

*

*@return月份*/

public static intgetCurrentMonth() {

Calendar calendar=Calendar.getInstance();return calendar.get(Calendar.MONTH) + 1;

}/*** 获取当前时间的星期数:星期日=7;星期一=1;星期二=2;星期三=3;星期四=4;星期五=5;星期六=6;

*

*@return周数值*/

public static intgetCurrentWeek() {

Calendar calendar=Calendar.getInstance();int week =calendar.get(Calendar.DAY_OF_WEEK);

week= week - 1;if (week == 0)

week= 7;returnweek;

}/*** 获取当前年

*

*@return当前年*/

public static intgetCurrentYear() {

Calendar calendar=Calendar.getInstance();returncalendar.get(Calendar.YEAR);

}/*** 取得当前的日期时间字符串YYYY-MM-DD

*

*@returnString 取得当前的日期时间字符串*/

public staticString getDateString() {

String format= "yyyy-MM-dd";returngetDateTimeString(format);

}/*** 取得当前的日期时间字符串YYYY/MM/DD (移动)

*

*@returnString 取得当前的日期时间字符串YYYY/MM/DD*/

public staticString getDateString2() {

String format= "yyyy/MM/dd";returngetDateTimeString(format);

}/*** 取得当前的日期时间字符串YYMMDDHHMISS

*

*@returnString 取得当前的日期时间字符串YYMMDDHHMISS*/

public staticString getDateTime12String() {

String format= "yyMMddHHmmss";returngetDateTimeString(format);

}/*** 取得当前的日期时间字符串YYYYMMDDHHMISS

*

*@returnString 取得当前的日期时间字符串YYYYMMDDHHMISS*/

public staticString getDateTime14String() {

String format= "yyyyMMddHHmmss";returngetDateTimeString(format);

}/*** 取得当前的日期时间字符串YYYYMM

*

*@returnString 取得当前的日期时间字符串*/

public staticString getDateTime6String() {

String format= "yyyyMM";returngetDateTimeString(format);

}/*** 取得当前的日期时间字符串YYYYMMDD

*

*@returnString 取得当前的日期时间字符串*/

public staticString getDateTime8String() {

String format= "yyyyMMdd";returngetDateTimeString(format);

}/*** 取得当前的日期整型数组共7项,分别为年,月,日,时,分,秒,毫秒

*

*@returnint[] 共7项,分别为年,月,日,时,分,秒,毫秒*/

public static int[] getDateTimes() {int[] dates = new int[7];

Calendar calendar=Calendar.getInstance();

dates[0] =calendar.get(Calendar.YEAR);

dates[1] = calendar.get(Calendar.MONTH) + 1;

dates[2] =calendar.get(Calendar.DAY_OF_MONTH);

dates[3] =calendar.get(Calendar.HOUR_OF_DAY);

dates[4] =calendar.get(Calendar.MINUTE);

dates[5] =calendar.get(Calendar.SECOND);

dates[6] =calendar.get(Calendar.MILLISECOND);returndates;

}/*** 取得当前的日期时间字符串YYYY-MM-DD HH:mm:ss

*

*@returnString 取得当前的日期时间字符串YYYY-MM-DD HH:mm:ss*/

public staticString getDateTimeString() {

String format= "yyyy-MM-dd HH:mm:ss";returngetDateTimeString(format);

}/*** 取得当前的日期时间字符串

*

*@paramformat

* 格式,如String format = "yyyy-MM-dd HH:mm:ss";

*@returnString 取得当前的日期时间字符串*/

public staticString getDateTimeString(String format) {return toDateTimeString(newjava.util.Date(), format);

}/*** 取得当前的日期时间字符串YYYY/MM/DD HH:mm:ss (移动)

*

*@returnString 取得当前的日期时间字符串YYYY/MM/DD HH:mm:ss*/

public staticString getDateTimeString2() {

String format= "yyyy/MM/dd HH:mm:ss";returngetDateTimeString(format);

}/**返回从当日结束的Timestamp*/

public staticTimestamp getDayEnd(Timestamp stamp) {return getDayEnd(stamp, 0);

}/**返回从多少日后结束的Timestamp*/

public static Timestamp getDayEnd(Timestamp stamp, intdaysLater) {

Calendar tempCal=Calendar.getInstance();

tempCal.setTime(newjava.util.Date(stamp.getTime()));

tempCal.set(tempCal.get(Calendar.YEAR), tempCal.get(Calendar.MONTH), tempCal.get(Calendar.DAY_OF_MONTH),23, 59, 59);

tempCal.add(Calendar.DAY_OF_MONTH, daysLater);return newTimestamp(tempCal.getTime().getTime());

}/*** 获取指定时间所在周的第一天的时间

*

*@paramyear 年

*@parammonth 月

*@paramday 日

*@return年、月、日数组*/

public static int[] getDayOfWeek(int year, int month, intday) {int[] rtn = new int[6];int week = 0;long longDate = 0;

java.util.Date date= null;

Calendar calendar1=Calendar.getInstance();

Calendar calendar2=Calendar.getInstance();

Calendar calendar=Calendar.getInstance();

calendar.set(year, month- 1, day);

calendar.setFirstDayOfWeek(Calendar.SUNDAY);

week=calendar.get(Calendar.DAY_OF_WEEK);

longDate= (calendar.getTime()).getTime() - (60 * 1000 * 60 * 24 * (week - 1));

date= newjava.util.Date(longDate);

calendar1.setTime(date);

rtn[0] =calendar1.get(Calendar.YEAR);

rtn[1] = calendar1.get(Calendar.MONTH) + 1;

rtn[2] =calendar1.get(Calendar.DATE);

longDate= (calendar.getTime()).getTime() + (60 * 1000 * 60 * 24 * (7 -week));

date= newjava.util.Date(longDate);

calendar2.setTime(date);

rtn[3] =calendar2.get(Calendar.YEAR);

rtn[4] = calendar2.get(Calendar.MONTH) + 1;

rtn[5] =calendar2.get(Calendar.DATE);returnrtn;

}/*** 根据传入的日期得到是每周的周几

*

*@paramsendDate 日期格式:yyyy-MM-dd

*@return

*/

public staticString getDayOfWeek(String sendDate) {

String dayName[]= { "0", "7", "1", "2", "3", "4", "5", "6"};

Calendar c= toCalendar(sendDate + " 00:00:00");int dayOfWeek =c.get(Calendar.DAY_OF_WEEK);returndayName[dayOfWeek];

}/**返回从当日开始的Timestamp*/

public staticTimestamp getDayStart(Timestamp stamp) {return getDayStart(stamp, 0);

}/**返回多少天后开始的Timestamp*/

public static Timestamp getDayStart(Timestamp stamp, intdaysLater) {

Calendar tempCal=Calendar.getInstance();

tempCal.setTime(newjava.util.Date(stamp.getTime()));

tempCal.set(tempCal.get(Calendar.YEAR), tempCal.get(Calendar.MONTH), tempCal.get(Calendar.DAY_OF_MONTH),0, 0, 0);

tempCal.add(Calendar.DAY_OF_MONTH, daysLater);return newTimestamp(tempCal.getTime().getTime());

}/*** 获取后一天的Date String

*

*@paramspe 分隔符

*@returnYYYY+spe+MM+spe+DD*/

public staticString getNextDateStr(String spe) {

Calendar calendar=Calendar.getInstance();long longDate = (calendar.getTime()).getTime() + (1000 * 60 * 60 * 24 * 1);

java.util.Date date= newjava.util.Date(longDate);

calendar.setTime(date);returntoDateString(calendar.getTime(), spe);

}/*** 获取后几天对应的当前时间

*

*@paramdays 格式化如 yyyy-MM-dd

*@returnString*/

public static String getNextDateString(intdays) {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.DAY_OF_MONTH, days);returntoDateString(calendar);

}/*** 获取指定时间的后一天的Date String

*

*@paramcurrentDate 分隔符

*@returnYYYY+spe+MM+spe+DD*/

public staticString getNextDateString(String currentDate) {

Calendar calendar= toCalendar(currentDate + " 00:00:01");

calendar.add(Calendar.DAY_OF_MONTH,1);returntoDateString(calendar);

}/*** 获取后几小时对应的当前时间

*

*@paramhours 格式化如 yyyy-MM-dd

*@returnString*/

public static String getNextDateStringByHour(inthours) {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.HOUR_OF_DAY, hours);returntoDateString(calendar);

}/*** 获取后几秒对应的当前时间

*

*@paramseconds 格式化如 yyyy-MM-dd

*@returnString*/

public static String getNextDateStringBySecond(intseconds) {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.SECOND, seconds);returntoDateString(calendar);

}/*** 获取后一天的Date String

*

*@paramformat 格式化

*@returnYYYY+spe+MM+spe+DD*/

public staticString getNextDateTimeStr(String format) {

Calendar calendar=Calendar.getInstance();long longDate = (calendar.getTime()).getTime() + (1000 * 60 * 60 * 24 * 1);

java.util.Date date= newjava.util.Date(longDate);

calendar.setTime(date);returntoDateTimeString(calendar.getTime(), format);

}/*** 获取后几天对应的当前时间

*

*@paramdays 格式化如 yyyy-MM-dd

*@returnString*/

public static String getNextDateTimeString(intdays) {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.DAY_OF_MONTH, days);returntoDateTimeString(calendar);

}/*** 获取后几小时对应的当前时间

*

*@paramhours 格式化如 yyyy-MM-dd

*@returnString*/

public static String getNextDateTimeStringByHour(inthours) {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.HOUR_OF_DAY, hours);returntoDateTimeString(calendar);

}/*** 获取后几秒对应的当前时间

*

*@paramseconds 格式化如 yyyy-MM-dd

*@returnString*/

public static String getNextDateTimeStringBySecond(intseconds) {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.SECOND, seconds);returntoDateTimeString(calendar);

}/*** 获取后一天String

*

*@return年、月、日数组*/

public static int[] getNextDay() {

Calendar calendar=Calendar.getInstance();long longDate = (calendar.getTime()).getTime() + (1000 * 60 * 60 * 24 * 1);

java.util.Date date= newjava.util.Date(longDate);

calendar.setTime(date);int[] rtn = new int[3];

rtn[0] =calendar.get(Calendar.YEAR);

rtn[1] = calendar.get(Calendar.MONTH) + 1;

rtn[2] =calendar.get(Calendar.DATE);returnrtn;

}/*** 获取当前时间的后一天或数天的年、月、日,并以数组形式还回。 数组0为年;1为月;2为日

*

*@paramyear 当前年

*@parammonth 当前月

*@paramday 当前日期

*@paramdays 相差天数

*@return年、月、日数组*/

public static int[] getNextDay(int year, int month, int day, intdays) {

Calendar calendar=Calendar.getInstance();

calendar.set(year, month- 1, day);long longDate = (calendar.getTime()).getTime() + (1000 * 60 * 60 * 24 *days);

java.util.Date date= newjava.util.Date(longDate);

calendar.setTime(date);int[] rtn = new int[3];

rtn[0] =calendar.get(Calendar.YEAR);

rtn[1] = calendar.get(Calendar.MONTH) + 1;

rtn[2] =calendar.get(Calendar.DATE);returnrtn;

}/**返回下一天开始的Timestamp*/

public staticTimestamp getNextDayStart(Timestamp stamp) {return getDayStart(stamp, 1);

}/*** 获取前几小时对应的当前时间

*

*@paramhours 格式化如 yyyy-MM-dd

*@returnString*/

public static String getPreviousDateByHourString(inthours) {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.HOUR_OF_DAY,-hours);returntoDateString(calendar);

}/*** 获取前几秒对应的当前时间

*

*@paramsecond 格式化如 yyyy-MM-dd

*@returnString*/

public static String getPreviousDateBySecondString(intsecond) {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.SECOND,-second);returntoDateString(calendar);

}/*** 获取前一天对应的当前时间,采用标准格式yyyy-MM-dd

*

*@returnString*/

public staticString getPreviousDateString() {return getPreviousDateTimeString("yyyy-MM-dd");

}/*** 获取前几天对应的当前时间

*

*@paramdays 格式化如 yyyy-MM-dd

*@returnString*/

public static String getPreviousDateString(intdays) {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.DAY_OF_MONTH,-days);returntoDateString(calendar);

}/*** 获取前一天对应的当前时间,采用标准格式yyyyMMdd

*

*@returnString*/

public staticString getPreviousDateString1() {return getPreviousDateTimeString("yyyyMMdd");

}/*** 获取前一天对应的当前时间,采用短信格式yyyy/MM/dd

*

*@returnString*/

public staticString getPreviousDateString2() {return getPreviousDateTimeString("yyyy/MM/dd");

}/*** 获取前几小时对应的当前时间

*

*@paramhours 格式化如 yyyy-MM-dd

*@returnString*/

public static String getPreviousDateTimeByHourString(inthours) {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.HOUR_OF_DAY,-hours);returntoDateTimeString(calendar);

}/*** 获取前几秒对应的当前时间

*

*@paramsecond 格式化如 yyyy-MM-dd

*@returnString*/

public static String getPreviousDateTimeBySecondString(intsecond) {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.SECOND,-second);returntoDateTimeString(calendar);

}/*** 获取前一天对应的当前时间,采用标准格式yyyy-MM-dd HH:mm:ss

*

*@returnString*/

public staticString getPreviousDateTimeString() {return getPreviousDateTimeString("yyyy-MM-dd HH:mm:ss");

}/*** 获取前几天对应的当前时间

*

*@paramdays 格式化如 yyyy-MM-dd

*@returnString*/

public static String getPreviousDateTimeString(intdays) {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.DAY_OF_MONTH,-days);returntoDateTimeString(calendar);

}/*** 获取前一天对应的当前时间

*

*@paramformat 格式化如 yyyy-MM-dd HH:mm:ss

*@returnString*/

public staticString getPreviousDateTimeString(String format) {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.DAY_OF_MONTH,-1);returntoDateTimeString(calendar, format);

}/*** 获取前一天对应的当前时间,采用短信格式yyyy/MM/dd HH:mm:ss

*

*@returnString*/

public staticString getPreviousDateTimeString2() {return getPreviousDateTimeString("yyyy/MM/dd HH:mm:ss");

}/*** 获取当前时间的前一天或数天的年、月、日,并以数组形式还回。 数组0为年;1为月;2为日

*

*@paramyear 当前年

*@parammonth 当前月

*@paramday 当前日期

*@paramdays 相差天数

*@return年、月、日数组*/

public static int[] getPreviousDay(int year, int month, int day, intdays) {

Calendar calendar=Calendar.getInstance();

calendar.set(year, month- 1, day);long longDate = (calendar.getTime()).getTime() - (1000 * 60 * 60 * 24 *days);

java.util.Date date= newjava.util.Date(longDate);

calendar.setTime(date);int[] rtn = new int[3];

rtn[0] =calendar.get(Calendar.YEAR);

rtn[1] = calendar.get(Calendar.MONTH) + 1;

rtn[2] =calendar.get(Calendar.DATE);returnrtn;

}/*** 得到当前时间的上一个月.格式:yyyy-MM*/

public staticString getProviesMoth() {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.MONTH,-1);return DateTimeUtil.toDateTimeString(calendar, "yyyy-MM");

}/*** 获取和当前时间毫秒差值

*

*@paramdateTime YYYY-MM-DD hh:mm:ss

*@return毫秒差*/

public static longgetTimeMargin(String dateTime) {int index = dateTime.indexOf(" ");

String date= dateTime.substring(0, index);

String time= dateTime.substring(index + 1);int dateSlash1 = date.indexOf("-");int dateSlash2 = date.lastIndexOf("-");if (dateSlash1 <= 0 || dateSlash1 ==dateSlash2)return -1;int timeColon1 = time.indexOf(":");int timeColon2 = time.lastIndexOf(":");if (timeColon1 <= 0 || timeColon1 ==timeColon2)return -1;

Calendar calendar=Calendar.getInstance();try{int year = Integer.parseInt(date.substring(0, dateSlash1));int month = Integer.parseInt(date.substring(dateSlash1 + 1, dateSlash2));int day = Integer.parseInt(date.substring(dateSlash2 + 1));int hour = Integer.parseInt(time.substring(0, timeColon1));int minute = Integer.parseInt(time.substring(timeColon1 + 1, timeColon2));int second = Integer.parseInt(time.substring(timeColon2 + 1));

calendar.set(year, month- 1, day, hour, minute, second);

}catch(Exception e) {return -1;

}return System.currentTimeMillis() -calendar.getTimeInMillis();

}public staticString getTimeMillStr() {

Calendar calendar=Calendar.getInstance();long time =calendar.getTimeInMillis();

String result=String.valueOf(time);returnresult;

}/*** 取得当前的日期时间字符串HH:mm:ss

*

*@returnString 取得当前的日期时间字符串*/

public staticString getTimeString() {

String format= "HH:mm:ss";returngetDateTimeString(format);

}/*** 日期字符串校验,是否与指定的 format格式一致.

*

*@paramdateStr

*@paramformat 格式字符串,比如 yyyy-MM-dd

*@return

*/

public static booleanisDate(String dateStr, String format) {try{

SimpleDateFormat sdf= newSimpleDateFormat(format);

sdf.setLenient(false);

sdf.parse(dateStr);

}catch(ParseException e) {return false;

}return true;

}/**返回当前时间的Date*/

public staticjava.util.Date nowDate() {return newjava.util.Date();

}/**返回当前时间的Timestamp*/

public staticTimestamp nowTimestamp() {return newTimestamp(System.currentTimeMillis());

}/*** 通过标准时间输入,年,月,日,时,分,秒,生成java.util.Date

*

*@paramyear 年

*@parammonth 月

*@paramday 日

*@paramhour 时

*@paramminute 分

*@paramsecond 秒

*@returnCalendar*/

public static Calendar toCalendar(int year, int month, int day, int hour, int minute, intsecond) {

Calendar c=Calendar.getInstance();

c.set(Calendar.YEAR, year);

c.set(Calendar.MONTH, month- 1);

c.set(Calendar.DATE, day);

c.set(Calendar.HOUR_OF_DAY, hour);

c.set(Calendar.MINUTE, minute);

c.set(Calendar.SECOND, second);returnc;

}/*** 通过整型数组,组织一个日历

*

*@paramdates

*@return通过整型数组,返回一个日历*/

public static Calendar toCalendar(int[] dates) {if (dates == null || dates.length < 6)return null;return toCalendar(dates[0], dates[1], dates[2], dates[3], dates[4], dates[5]);

}/*** 通过String,组织一个日历

*

*@paramdatetime

*@return通过整型数组,返回一个日历*/

public staticCalendar toCalendar(String datetime) {

java.util.Date date=toDateFromStr(datetime);

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);returncalendar;

}/*** 通过标准时间输入,年,月,日,时,分,秒,生成java.util.Date

*

*@paramyearStr 年

*@parammonthStr 月

*@paramdayStr 日

*@paramhourStr 时

*@paramminuteStr 分

*@paramsecondStr 秒

*@returnCalendar*/

public staticCalendar toCalendar(String yearStr, String monthStr, String dayStr, String hourStr, String minuteStr, String secondStr) {intyear, month, day, hour, minute, second;try{

year=Integer.parseInt(yearStr);

month=Integer.parseInt(monthStr);

day=Integer.parseInt(dayStr);

hour=Integer.parseInt(hourStr);

minute=Integer.parseInt(minuteStr);

second=Integer.parseInt(secondStr);

}catch(Exception e) {return null;

}returntoCalendar(year, month, day, hour, minute, second);

}/*** 通过标准时间输入,年,月,日,时,分,秒,生成java.util.Date

*

*@paramyear 年

*@parammonth 月

*@paramday 日

*@paramhour 时

*@paramminute 分

*@paramsecond 秒

*@returnjava.util.Date*/

public static java.util.Date toDate(int year, int month, int day, int hour, int minute, intsecond) {

Calendar calendar=Calendar.getInstance();try{

calendar.set(year, month- 1, day, hour, minute, second);

}catch(Exception e) {return null;

}returncalendar.getTime();

}/*** 通过整型数组,组织一个日期

*

*@paramdates

*@return通过整型数组,组织一个日期*/

public static java.util.Date toDate(int[] dates) {if (dates == null || dates.length < 6)return null;returntoCalendar(dates).getTime();

}/*** 字符串转为时间,字符串符合标准格式:"YYYY-MM-DD HH:MM:SS"

*

*@paramdateTime 标准时间格式 "YYYY-MM-DD HH:MM:SS"

*@returnjava.util.Date*/

public staticjava.util.Date toDate(String dateTime) {int index = dateTime.indexOf(" ");

String date= dateTime.substring(0, index);

String time= dateTime.substring(index + 1);returntoDate(date, time);

}/*** 字符串转为时间,字符串符合标准日期格式:"YYYY-MM-DD",和标准时间格式:"HH:MM:SS"

*

*@paramdate 标准日期格式 "YYYY-MM-DD"

*@paramtime 标准时间格式 "HH:MM:SS"

*@returnjava.util.Date*/

public staticjava.util.Date toDate(String date, String time) {if (date == null || time == null)return null;int dateSlash1 = date.indexOf("-");int dateSlash2 = date.lastIndexOf("-");if (dateSlash1 <= 0 || dateSlash1 ==dateSlash2)return null;int timeColon1 = time.indexOf(":");int timeColon2 = time.lastIndexOf(":");if (timeColon1 <= 0 || timeColon1 ==timeColon2)return null;

String year= date.substring(0, dateSlash1);

String month= date.substring(dateSlash1 + 1, dateSlash2);

String day= date.substring(dateSlash2 + 1);

String hour= time.substring(0, timeColon1);

String minute= time.substring(timeColon1 + 1, timeColon2);

String second= time.substring(timeColon2 + 1);

;returntoDate(year, month, day, hour, minute, second);

}/*** 通过标准时间输入,年,月,日,时,分,秒,生成java.util.Date

*

*@paramyearStr 年

*@parammonthStr 月

*@paramdayStr 日

*@paramhourStr 时

*@paramminuteStr 分

*@paramsecondStr 秒

*@returnjava.util.Date*/

public staticjava.util.Date toDate(String yearStr, String monthStr, String dayStr, String hourStr, String minuteStr, String secondStr) {intyear, month, day, hour, minute, second;try{

year=Integer.parseInt(yearStr);

month=Integer.parseInt(monthStr);

day=Integer.parseInt(dayStr);

hour=Integer.parseInt(hourStr);

minute=Integer.parseInt(minuteStr);

second=Integer.parseInt(secondStr);

}catch(Exception e) {return null;

}returntoDate(year, month, day, hour, minute, second);

}/*** 取得当前的日期时间 按默认格式YYYY-MM-DD HH:mm:ss不对则返回null

*

*@paramstr 字符串

*@return取得当前的日期时间 按默认格式不对则返回null*/

public staticjava.util.Date toDateFromStr(String str) {try{

String format= "yyyy-MM-dd HH:mm:ss";

SimpleDateFormat sdf= newSimpleDateFormat(format);returnsdf.parse(str);

}catch(ParseException e) {return null;

}

}/*** 取得当前的日期时间

*

*@paramstr 字符串

*@paramformat 格式

*@return取得当前的日期时间 如果格式不对则返回null*/

public staticjava.util.Date toDateFromStr(String str, String format) {try{

SimpleDateFormat sdf= newSimpleDateFormat(format);returnsdf.parse(str);

}catch(ParseException e) {return null;

}

}/*** 取得给定日历,给定格式的日期字符串

*

*@paramcalendar 日历,给定一个日历

*@returnString 取得默认的日期时间字符串"yyyy-MM-dd"*/

public staticString toDateString(Calendar calendar) {

String format= "yyyy-MM-dd";returntoDateTimeString(calendar.getTime(), format);

}/*********************************************************/

//以下为数据库使用的日期方法,Timestamp ,java.sql.Date

/*********************************************************/

/*** 生成标准日期,格式为 YYYY-MM-DD

*

*@paramdate The Date

*@return生成日期,格式为 YYYY-MM-DD*/

public staticString toDateString(java.util.Date date) {return toDateString(date, "-");

}/*** 生成标准日期,格式为 YYYY+spe+MM+spe+DD

*

*@paramdate The Date

*@return生成日期,格式为 YYYY+spe+MM+spe+DD*/

public staticString toDateString(java.util.Date date, String spe) {if (date == null)return "";

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);int month = calendar.get(Calendar.MONTH) + 1;int day =calendar.get(Calendar.DAY_OF_MONTH);int year =calendar.get(Calendar.YEAR);

String monthStr= "" +month;

String dayStr= "" +day;

String yearStr= "" +year;if (month < 10)

monthStr= "0" +month;if (day < 10)

dayStr= "0" +day;return yearStr + spe + monthStr + spe +dayStr;

}/*** 取得给定日历,给定格式的日期时间字符串

*

*@paramcalendar 日历,给定一个日历

*@returnString 取得默认的日期时间字符串"yyyy-MM-dd HH:mm:ss"*/

public staticString toDateTimeString(Calendar calendar) {

String format= "yyyy-MM-dd HH:mm:ss";returntoDateTimeString(calendar.getTime(), format);

}/*** 取得给定日历,给定格式的日期时间字符串

*

*@paramcalendar 日历,给定一个日历

*@paramformat 格式,如String format = "yyyy-MM-dd HH:mm:ss";

*@returnString 取得给定日历,给定格式的日期时间字符串*/

public staticString toDateTimeString(Calendar calendar, String format) {returntoDateTimeString(calendar.getTime(), format);

}/*** 生成标准格式的字符串 格式为: "MM-DD-YYYY HH:MM:SS"

*

*@paramdate The Date

*@return生成默认格式的字符串 格式为: "MM-DD-YYYY HH:MM:SS"*/

public staticString toDateTimeString(java.util.Date date) {if (date == null)return "";

String dateString=toDateString(date);

String timeString=toTimeString(date);if (dateString == null || timeString == null)return "";return dateString + " " +timeString;

}/*** 取得给定时间,给定格式的日期时间字符串

*

*@paramdate 日期,给定一个时间

*@paramformat 格式,如String format = "yyyy-MM-dd HH:mm:ss";

*@returnString 取得给定时间,给定格式的日期时间字符串*/

public staticString toDateTimeString(java.util.Date date, String format) {

SimpleDateFormat sdf= newSimpleDateFormat(format);returnsdf.format(date);

}/*** 取得给定时间,给定格式的日期时间字符串,标准格式:"yyyy-MM-dd HH:mm:ss";

*

*@paramdatetime 日期,给定一个时间的毫秒数

*@returnString 取得给定时间,给定格式的日期时间字符串*/

public static String toDateTimeString(longdatetime) {

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return sdf.format(newjava.util.Date(datetime));

}/*** 取得给定时间,给定格式的日期时间字符串

*

*@paramdatetime 日期,给定一个时间的毫秒数

*@paramformat 格式,如String format = "yyyy-MM-dd HH:mm:ss";

*@returnString 取得给定时间,给定格式的日期时间字符串*/

public static String toDateTimeString(longdatetime, String format) {

SimpleDateFormat sdf= newSimpleDateFormat(format);return sdf.format(newjava.util.Date(datetime));

}/*** 生成java.sql.Date,通过传入year, month, day

*

*@paramyear 年

*@parammonth 月

*@paramday 日

*@returnA java.sql.Date*/

public static java.sql.Date toSqlDate(int year, int month, intday) {

java.util.Date newDate= toDate(year, month, day, 0, 0, 0);if (newDate == null)return null;return newjava.sql.Date(newDate.getTime());

}/*** String到java.sql.Date的转换 标准格式:YYYY-MM-DD

*

*@paramdate The date String

*@returnjava.sql.Date*/

public staticjava.sql.Date toSqlDate(String date) {

java.util.Date newDate= toDate(date, "00:00:00");if (newDate == null)return null;return newjava.sql.Date(newDate.getTime());

}/*** 生成java.sql.Date,通过传入year, month, day

*

*@paramyearStr 年

*@parammonthStr 月

*@paramdayStr 日

*@returnA java.sql.Date*/

public staticjava.sql.Date toSqlDate(String yearStr, String monthStr, String dayStr) {

java.util.Date newDate= toDate(yearStr, monthStr, dayStr, "0", "0", "0");if (newDate == null)return null;return newjava.sql.Date(newDate.getTime());

}/*** 生成 java.sql.Time 通过输入时,分,秒

*

*@paramhour int 时

*@paramminute int 分

*@paramsecond 秒

*@returnA java.sql.Time*/

public static java.sql.Time toSqlTime(int hour, int minute, intsecond) {

java.util.Date newDate= toDate(0, 0, 0, hour, minute, second);if (newDate == null)return null;return newjava.sql.Time(newDate.getTime());

}/*** 转换String 到 java.sql.Time,格式:"HH:MM:SS"

*

*@paramtime The time String

*@returnA java.sql.Time*/

public staticjava.sql.Time toSqlTime(String time) {

java.util.Date newDate= toDate("1970-1-1", time);if (newDate == null)return null;return newjava.sql.Time(newDate.getTime());

}/*** 生成 java.sql.Time 通过输入时,分,秒

*

*@paramhourStr 时

*@paramminuteStr 分

*@paramsecondStr 秒

*@returnA java.sql.Time*/

public staticjava.sql.Time toSqlTime(String hourStr, String minuteStr, String secondStr) {

java.util.Date newDate= toDate("0", "0", "0", hourStr, minuteStr, secondStr);if (newDate == null)return null;return newjava.sql.Time(newDate.getTime());

}/*** 生成 Timestamp 通过输入年,月,日,时,分,秒

*

*@paramyear 年 int

*@parammonth 月 int

*@paramday 日 int

*@paramhour 时 int

*@paramminute 分 int

*@paramsecond 秒 int

*@returnTimestamp*/@SuppressWarnings("null")public static Timestamp toTimestamp(int year, int month, int day, int hour, int minute, intsecond) {

java.util.Date newDate=toDate(year, month, day, hour, minute, second);if (newDate != null)return null;return newTimestamp(newDate.getTime());

}/*** 转换String 到 java.sql.Timestamp,格式:"YYYY-MM-DD HH:MM:SS"

*

*@paramdateTime 格式:"YYYY-MM-DD HH:MM:SS"

*@returnTimestamp*/@SuppressWarnings("null")public staticTimestamp toTimestamp(String dateTime) {

java.util.Date newDate=toDate(dateTime);if (newDate != null)return null;return newTimestamp(newDate.getTime());

}/*** 转换String 到 java.sql.Timestamp,格式:"YYYY-MM-DD HH:MM:SS"

*

*@paramdate The date String: YYYY-MM-DD

*@paramtime The time String: HH:MM:SS

*@returnTimestamp*/

public staticTimestamp toTimestamp(String date, String time) {

java.util.Date newDate=toDate(date, time);if (newDate == null)return null;return newTimestamp(newDate.getTime());

}/*** 生成 Timestamp 通过输入年,月,日,时,分,秒

*

*@paramyearStr 年

*@parammonthStr 月

*@paramdayStr 日

*@paramhourStr 时

*@paramminuteStr 分

*@paramsecondStr T秒

*@returnTimestamp*/@SuppressWarnings("null")public staticTimestamp toTimestamp(String yearStr, String monthStr, String dayStr, String hourStr, String minuteStr, String secondStr) {

java.util.Date newDate=toDate(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);if (newDate != null)return null;return newTimestamp(newDate.getTime());

}/*** 根据输入的时,分,秒,生成时间格式 HH:MM:SS

*

*@paramhour 时

*@paramminute 分

*@paramsecond 秒

*@return生成时间格式为 HH:MM:SS*/

public static String toTimeString(int hour, int minute, intsecond) {

String hourStr= "" +hour;

String minuteStr= "" +minute;

String secondStr= "" +second;if (hour < 10)

hourStr= "0" +hour;if (minute < 10)

minuteStr= "0" +minute;if (second < 10)

secondStr= "0" +second;return hourStr + ":" + minuteStr + ":" +secondStr;

}/*** 根据输入的时间,生成时间格式 HH:MM:SS

*

*@paramdate java.util.Date

*@return生成时间格式为 HH:MM:SS*/

public staticString toTimeString(java.util.Date date) {if (date == null)return "";

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);returntoTimeString(calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND));

}/*** 获取传入时间的前N个小时对应的时间

*

*@paramformat 格式化如 yyyy-MM-dd HH:mm:ss

*@paramhour 小时数

*@returnString 格式化如 yyyy-MM-dd HH:mm:ss*/

public static String getPreviousDateTimeString(String format, inthour) {

Calendar calendar=toCalendar(format);

calendar.add(Calendar.HOUR_OF_DAY,-hour);returntoDateTimeString(calendar, format);

}/*** 获取传入时间的前N天时间

*

*@paramformat 格式化如 yyyyMMdd

*@returnString 格式化如 yyyyMMdd*/

public static String getPreviousDateString(String format, intdays) {

format= format.substring(0, 4) + "-" + format.substring(4, 6) + "-" + format.substring(6, 8) + " 00:00:00";

Calendar calendar=toCalendar(format);

calendar.add(Calendar.DAY_OF_MONTH,-days);return toDateString(calendar).replaceAll("-", "").substring(0, 8);

}/*** 得到几天前的时间

*

*@paramd

*@paramday

*@return*@throwsParseException*/

public static String getDateBefore(String d, int day) throwsParseException {

SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd");

Date dt=formatter.parse(d);

Calendar now=Calendar.getInstance();

now.setTime(dt);

now.set(Calendar.DATE, now.get(Calendar.DATE)-day);

String time=formatter.format(now.getTime());returntime;

}/*** 得到几天后的时间

*

*@paramd

*@paramday

*@return

*/

public static String getDateAfter(String d, int day) throwsParseException {

SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd");

Date dt=formatter.parse(d);

Calendar now=Calendar.getInstance();

now.setTime(dt);

now.set(Calendar.DATE, now.get(Calendar.DATE)+day);

String time=formatter.format(now.getTime());returntime;

}/*** 获取当前星期几

*@parampTime

*@return*@throwsException*/

public static int dayForWeek(String pTime) throwsException {

SimpleDateFormat format= new SimpleDateFormat("yyyy-MM-dd");

Calendar c=Calendar.getInstance();

c.setTime(format.parse(pTime));int dayForWeek = 0;if(c.get(Calendar.DAY_OF_WEEK) == 1){

dayForWeek= 7;

}else{

dayForWeek= c.get(Calendar.DAY_OF_WEEK) - 1;

}returndayForWeek;

}/*** 根据当前日期获取周一周日

*@paramdaytime

*@throwsParseException*/

public static String[] getWeek(String daytime) throwsParseException {

String[] weekday= new String[2];

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //设置时间格式

Calendar cal =Calendar.getInstance();

Date time=sdf.parse(daytime);

cal.setTime(time);

logger.info("要计算日期为:",sdf.format(cal.getTime()));//输出要计算日期//判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了

int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天

if(1 ==dayWeek) {

cal.add(Calendar.DAY_OF_MONTH,-1);

}

cal.setFirstDayOfWeek(Calendar.MONDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一

int day = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天

cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-day);//根据日历的规则,给当前日期减去星期几与一个星期第一天的差值

weekday[0] =sdf.format(cal.getTime());

cal.add(Calendar.DATE,6);

weekday[1] =sdf.format(cal.getTime());returnweekday;

}/*** 获取当前月初月末

*@paramdaytime

*@return*@throwsParseException*/

public static String[] getMonth(String daytime) throwsParseException {

String[] weekday= new String[2];

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //设置时间格式

Calendar cal =Calendar.getInstance();

Date time=sdf.parse(daytime);

cal.setTime(time);

logger.info("要计算日期为:",sdf.format(cal.getTime()));//判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了

int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天

if(1 ==dayWeek) {

cal.add(Calendar.DAY_OF_MONTH,-1);

}

cal.setFirstDayOfWeek(Calendar.MONDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一

int day = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天

cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-day);//根据日历的规则,给当前日期减去星期几与一个星期第一天的差值

weekday[0] =sdf.format(cal.getTime());

cal.add(Calendar.DATE,6);

weekday[1] =sdf.format(cal.getTime());returnweekday;

}/*** 得到几年前的时间

*

*@paramd

*@paramyear

*@return*@throwsParseException*/

public static String getDateYearBefore(String d, int year) throwsParseException {

SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd");

Date dt=formatter.parse(d);

Calendar now=Calendar.getInstance();

now.setTime(dt);

now.set(Calendar.YEAR, now.get(Calendar.YEAR)-year);

String time=formatter.format(now.getTime());returntime;

}

}

java hh24miss_时间日期转换工具类,获取当前时间YYYYMMDD24HHMISS、YYYYMMDDHHMISS相关推荐

  1. android 日期时间类,Android 日期时间等转换工具类

    package com.easyder.util; import java.text.SimpleDateFormat; import java.util.Date; /** * 日期时间等转换工具类 ...

  2. java常用地图坐标系转换工具类,支持谷歌,腾讯,百度等主流的地理坐标转换

    package com.shen.springboot.redis.util;import java.util.ArrayList; import java.util.HashMap; import ...

  3. Java 全角半角转换工具类

    /*** @author: lee* @Date: 2018/11/29 09:56* @Description: 全角半角转换工具类*/ public class AsciiUtil {public ...

  4. JAVA日期转换工具类

    java中经常会用到日期的转换,所有自己整理了一套日期转换的工具类,方便使用. 首先导入 <dependency><groupId>joda-time</groupId& ...

  5. 06_03_SpringMVC 任务一: SpringMVC基本应用(SpringMVC请求与响应,进行日期转换工具类DateConverter)

    任务一: SpringMVC基本应用 课程任务主要内容: SpringMVC简介 SpringMVC组件概述 SpringMVC请求 SpringMVC响应 静态资源开启 一 SpringMVC简介 ...

  6. 【转载】Java文件编码自动转换工具类

    本篇随笔主要介绍了一个用java语言写的将一个文件编码转换为另一个编码并不改变文件内容的工具类: 通过读取源文件内容,用URLEncoding重新编码解码的方式实现. 1 public class C ...

  7. Java代码示例: 使用reflections工具类获取某接口下所有的实现类

    pom依赖 <dependency><groupId>org.reflections</groupId><artifactId>reflections& ...

  8. Java 数据转换/进制转换 工具类

    public class ByteUtil {/*** 十六进制转为十进制*/public static String getHexToTen(String hex) {return String.v ...

  9. java inputtools_Java后台开发常用工具类

    本文涉及的工具类部分是自己编写,另一部分是在项目里收集的.工具类涉及数据库连接.格式转换.文件操作.发送邮件等等.提高开发效率,欢迎收藏与转载. 数据库连接工具类 数据库连接工具类--仅仅获得连接对象 ...

最新文章

  1. 基础002. Editplus编辑远程文件
  2. abc类计算机,计算机科学ABC类会议分类表
  3. Android访问网络系列之--访问图片
  4. 吹气球问题的C语言编程,C语言怎样给一个数组中的数从大到小排序
  5. Ext-ajax请求数据
  6. 基于链表的两个集合的交集(C++)
  7. 190817每日一句
  8. 内网部署GPS定位系统方案
  9. xshell5下载和安装教程
  10. 机器学习从业者人手必备的8本书
  11. (一)ROS中新建机器人模型(urdf格式)并用rviz显示
  12. webservice和jms的区别
  13. 利用canvas制作水印(兼容移动端哦)
  14. 深度学习系列文章之一:电脑配置选择
  15. laravel异常前后端独立返回 阿星小栈
  16. Android之微信开放平台创建应用
  17. 笔记本 键盘 唤醒计算机,笔记本电脑进入睡眠状态后无法通过鼠标或键盘来唤醒屏幕怎么解决...
  18. 关于godot第三方功能增强版
  19. 深入创新,共建原生 | 「DaoCloud 道客」与华钦科技签署合作备忘录
  20. 验证的方法篇之七:性能验证

热门文章

  1. 【微信小程序】图库——(后台接口篇)
  2. 台式计算机红外线端口,如何使用电脑的红外线端口遥控电视机
  3. Exadata 机器介绍
  4. 糟糕的设计会为我们的工作带来什么启发?
  5. 桌面运维工程师常见面试问题汇总
  6. dell笔记本游匣7559将系统重装到固态中
  7. 微软面试100题2010年版全部答案集锦(含下载地址)
  8. 微软等数据结构+算法面试100题
  9. Eviews:计算金融市场波动率(GARCH)
  10. 一波骚操作,用 Python 给照片换颜色