All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.net.vidyo.yd.common.utils.DateTimeUtil Maven / Gradle / Ivy

package cn.net.vidyo.yd.common.utils;

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 *
 * 
类 名: DateTimeUtil *
描 述: 日期时间工具类 *
作 者: shizhenwei *
创 建: 2017年5月15日 *
版 本: v0.0.2 *
*
历 史: (版本) 作者 时间 注释 */ public class DateTimeUtil { public static final String DIVIDE_LINE = "-"; public static final String DIVIDE_COLON = ":"; public static final long SECOND = 1000; public static final long MINUTE = 60 * SECOND; public static final long HOUR = 60 * MINUTE; public static final long DAY = 24 * HOUR; public static final long WEEK = 7 * DAY; public static final String YEAR_FORMAT = "yyyy"; public static final String YEAR_MONTH_FORMAT = "yyyy-MM"; public static final String SHORT_DATE_FORMAT = "yyyy-MM-dd"; public static final String SHORT_DATE_FORMAT1 = "yyyy-MM-dd"; public static final String SHORT_DATE_FORMAT_NO_SPIT = "yyyyMMdd"; public static final String SHORT_DATE_FORMAT_SPRIT_SPIT = "yyyy/MM/dd"; public static final String LONG_DATETIME_FORMAT_NO_SPIT = "yyyyMMddHHmmss"; public static final String LONG_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static final String SUPER_LONG_FORMAT = "yyyy-MM-dd HH:mm:ss sss"; private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static final int FIELD_YEAR = Calendar.YEAR; public static final int FIELD_MONTH = Calendar.MONTH; public static final int FIELD_DATE = Calendar.DATE; /** * 时间戳格式化 yyyy-MM-dd HH:mm:ss * @param date s * @return s */ public static String convertDateToTimestampString(Date date) { return sdf.format(date).toString(); } public static long convertDateToTimeMillis(Date date){ return date.getTime(); } public static long convertDateToTimeMillis(String datestr){ if(19==datestr.length()){ return convertDateToTimeMillis(datestr, LONG_FORMAT); }else{ return convertDateToTimeMillis(datestr, SHORT_DATE_FORMAT); } } public static long convertDateToTimeMillis(String datestr, String format){ Date date = convertDateStringToDate(datestr,format); return convertDateToTimeMillis(date); } public static String convertLonogTimeToFormatString(long time, String format){ Date date = new Date(time); SimpleDateFormat simpleDateFormat = getFormat(format); return simpleDateFormat.format(date); } /** * 系统当前时间戳 * @return s */ public static Timestamp getCurrentTimestamp(){ SimpleDateFormat myFormat = new SimpleDateFormat(LONG_FORMAT); long stamp = System.currentTimeMillis(); String timestamp = myFormat.format(stamp); return Timestamp.valueOf(timestamp); } /** * 日期转时间戳 * @param date s * @return s */ public static Timestamp convertDateToTimestamp(Date date) { return Timestamp.valueOf(convertDateToTimestampString(date)); } /** * 字符串转时间戳 * @param timestamp s * @return s */ public static Timestamp convertStringToTimestamp(String timestamp) { if(timestamp==null || timestamp.length()==0){ return null; } return Timestamp.valueOf(timestamp); } /** * 时间格式化 yyyy-MM-dd * @return s */ public static String getCurrentDateString() { return getDateString(new Date()); } /** * 时间格式化 yyyy-MM-dd * @param date s * @return s */ public static String getDateString(Date date) { return getCurrentDateString(date, SHORT_DATE_FORMAT); } /** * 时间格式化 yyyy-MM-dd * @param date s * @param format s * @return s */ public static String getCurrentDateString(Date date, String format) { String result = null; try { SimpleDateFormat myFormat = new SimpleDateFormat(format); result = myFormat.format(date); } catch (Exception e) { return null; } return result; } /** * 时间格式化 yyyy-MM-dd HH:mm:ss * @return s */ public static String getDateTimeString() { return getDateTimeString(new Date()); } /** * 时间格式化 yyyy-MM-dd HH:mm:ss * @param date s * @return s */ public static String getDateTimeString(Date date) { SimpleDateFormat d = new SimpleDateFormat(LONG_FORMAT); return d.format(date); } /** * 时间格式化 yyyy-MM-dd * @param date s * @return s */ public static String getShortDateString(Date date){ if(date==null) date = new Date(); return getCurrentDateString(date, SHORT_DATE_FORMAT); } /** * 时间格式化 yyyy-MM-dd HH:mm:ss * @param date s * @return s */ public static String getLongDateString(Date date){ if(date==null) date = new Date(); return getDateTimeString(date); } /** * 时间格式化 yyyy-MM-dd HH:mm:ss * @return s */ public static String convertDateToTimestampString(){ SimpleDateFormat myFormat = new SimpleDateFormat(LONG_FORMAT); return myFormat.format(System.currentTimeMillis()); } /** * 时间格式化 yyyyMMddHHmmss * @return ss */ public static String convertLongTimeToString(){ SimpleDateFormat myFormat = new SimpleDateFormat(LONG_DATETIME_FORMAT_NO_SPIT); return myFormat.format(System.currentTimeMillis()); } /** * 时间格式化 yyyyMMddHHmmss * @param ts s * @return s */ public static String convertLongTimeToString(long ts){ SimpleDateFormat myFormat = new SimpleDateFormat(LONG_DATETIME_FORMAT_NO_SPIT); return myFormat.format(ts); } /** * 时间戳TS * @return s */ public static String getCurrentLongTimestampString(){ long ts = System.currentTimeMillis(); return Long.toString(ts); } /** * N年后 * @param date s * @param amount s * @return s */ public static Date addYear(Date date, int amount) { return add(date, Calendar.YEAR, amount); } /** * N个月后 * @param date s * @param amount s * @return s */ public static Date addMonth(Date date, int amount) { return add(date, Calendar.MONTH, amount); } /** * N天后 * @param date s * @param amount s * @return s */ public static Date addDay(Date date, int amount) { return add(date, Calendar.DATE, amount); } /** * N(年、月、天)后 * @param date s * @param field s * @param amount s * @return s */ public static Date add(Date date, int field, int amount) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(field, amount); return calendar.getTime(); } /** * N(年、月、天)后 * @param datestr s * @param field s * @param amount s * @return s */ public static Date add(String datestr, int field, int amount) { Calendar calendar = Calendar.getInstance(); calendar.setTime(convertDateStringToDate(datestr)); calendar.add(field, amount); return calendar.getTime(); } /** * N(年、月、天)后(字符串形式) * @param datestr s * @param field s * @param amount s * @param format s * @return s */ public static String add(String datestr, int field, int amount, String format) { Calendar calendar = Calendar.getInstance(); calendar.setTime(convertDateStringToDate(datestr,format)); calendar.add(field, amount); return getCurrentDateString(calendar.getTime(), format); } public static long convertDateStringToLongStartTime(String dateString,String format){ Date date = convertDateStringToDate(dateString, format); return convertDateToLongStartTime(date); } public static long convertDateStringToLongStopTime(String dateString,String format){ Date date = convertDateStringToDate(dateString, format); return convertDateToLongStopTime(date); } public static int convertDateStringToMonth(String dateString,String format){ Date date = convertDateStringToDate(dateString, format); return convertDateToMonth(date); } public static int convertDateToMonth(Date date){ Calendar calendar=Calendar.getInstance(); calendar.setTime(date); return calendar.get(Calendar.YEAR)*100+calendar.get(Calendar.MONTH)+1; } public static long convertDateToLongStartTime(Date date){ return convertDateToStartTime(date).getTime(); } public static long convertDateToLongStopTime(Date date){ return convertDateToStopTime(date).getTime(); } public static Date convertDateToStartTime(Date date){ Calendar calendar=Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.HOUR,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0); return calendar.getTime(); } public static Date convertDateToStopTime(Date date){ Calendar calendar=Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.HOUR,23); calendar.set(Calendar.MINUTE,59); calendar.set(Calendar.SECOND,59); calendar.set(Calendar.MILLISECOND,999); return calendar.getTime(); } /*** * 获取当前时间,不含日期 * @return s */ public static String getCurrentTimeString(){ SimpleDateFormat sdf = new SimpleDateFormat("kk:mm:ss"); String time = sdf.format(Calendar.getInstance().getTime()); return time; } public static SimpleDateFormat getFormat(String format) { SimpleDateFormat myFormat = new SimpleDateFormat(format); return myFormat; } public static SimpleDateFormat getFormatByDate(String dateString) { if(19==dateString.length()){ return getFormat(LONG_FORMAT); }else{ return getFormat(SHORT_DATE_FORMAT); } } /** * 将字符串转为为日期 * @param datestr s * @return s */ public static Date convertDateStringToDate(String datestr) { if(19==datestr.length()){ return convertDateStringToDate(datestr, LONG_FORMAT); }else{ return convertDateStringToDate(datestr, SHORT_DATE_FORMAT); } } /** * 将字符串转为为日期 * @param datestr s * @param format s * @return s */ public static Date convertDateStringToDate(String datestr, String format) { try { if(datestr==null || datestr.length()==0){ return null; } SimpleDateFormat myFormat = new SimpleDateFormat(format); Date date = myFormat.parse(datestr); return date; } catch (Exception e) { return null; } } /*** * 月份的开始结束日期 * @param year s * @param month s * @param keys s * @return s */ public static Map getMonthStartDateAndEndDate(int year, int month, String... keys) { SimpleDateFormat d = new SimpleDateFormat(LONG_FORMAT); Map date = new HashMap(); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, month - 1); calendar.set(Calendar.DAY_OF_MONTH, 1); date.put(keys[0], d.format(calendar.getTime())); calendar.add(Calendar.MONTH, 1); calendar.add(Calendar.DAY_OF_MONTH, -1); date.put(keys[1], d.format(calendar.getTime())); return date; } /** * 时间格式化 * @param time ss * @return ss */ public static String getTimeString(String time) { String[] ti = time.split(":"); if (ti[1].length() == 1) { time = ti[0] + "0" + ti[1]; } else { time = ti[0] + ti[1]; } return time; } /** * 获取计费模式的年月 2017-06-26 至 2017-07-25 为 2017年07月 以此类推 * @param datestr 2017-06-19/2016-06-19 15:35:35 * @return s */ public static String getSicdtYearMonth(String datestr){ String[] fileds = datestr.split(DIVIDE_LINE); if(Integer.valueOf(fileds[2])>25){ Date date = add(datestr, FIELD_MONTH, 1); return getCurrentDateString(date, YEAR_MONTH_FORMAT); } return datestr.substring(0, 7); } public static String getSicdtYearMonth(){ return getSicdtYearMonth(DateTimeUtil.getCurrentDateString()); } public static String getCurrentHourMinuteString() { Date date = new Date(); return getTimeString(date.getHours() + ":" + date.getMinutes()); } /** * 月-天数 * @param year s * @param month s * @return s */ public static int getDayNum(int year, int month) { if (month == 2) { return year % 400 != 0 && (year % 4 != 0 || year % 100 == 0) ? 28 : 29; } String SmallMonth = ",4,6,9,11,"; return SmallMonth.indexOf(String.valueOf(String .valueOf((new StringBuffer(",")).append(String.valueOf(month)) .append(",")))) < 0 ? 31 : 30; } /*** * 两个日期之间的天数 * @param date1 s * @param date2 s * @return s */ public static int DateDiff(Date date1, Date date2) { int i = (int) ((date1.getTime() - date2.getTime()) / 3600 / 24 / 1000); return i; } /** * 日期拆分,取年或月或日 Y-年 M-月 D-日 * @param strDate s * @param style s * @return s */ public static int getYearMonthDate(String strDate, String style) { int year; int month; int day; int firstDash; int secondDash; if (strDate == null) { return 0; } firstDash = strDate.indexOf('-'); secondDash = strDate.indexOf('-', firstDash + 1); if ((firstDash > 0) & (secondDash > 0) & (secondDash < strDate.length() - 1)) { year = Integer.parseInt(strDate.substring(0, firstDash)); month = Integer.parseInt(strDate.substring(firstDash + 1, secondDash)); day = Integer.parseInt(strDate.substring(secondDash + 1)); } else { return 0; } if (style.equalsIgnoreCase("Y")) { return year; } else if (style.equalsIgnoreCase("M")) { return month; } else if (style.equalsIgnoreCase("D")) { return day; } else { return 0; } } /*** * 是否是年份的第一天 * @param date s * @return s */ public static boolean isYearFirstDay(java.sql.Date date) { boolean i = false; if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 1) && (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 1)) { i = true; } return i; } /** * 是否是半年的第一天 * @param date s * @return s */ public static boolean isHalfYearFirstDay(java.sql.Date date) { boolean i = false; if (((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 1) && (DateTimeUtil .getYearMonthDate(date.toString(), "D") == 1)) || ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 7) && (DateTimeUtil .getYearMonthDate(date.toString(), "D") == 1))) { i = true; } return i; } /** * 取半年的第一天 * @param date s * @return s */ public static String getHalfYearFirstDay(java.sql.Date date) { String month = "01"; if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 7) { month = "07"; } String day = Integer.toString(DateTimeUtil.getYearMonthDate( date.toString(), "Y")) + "-" + month + "-01"; return day; } /** * 是否是半年最后一天 * @param date s * @return s */ public static boolean isHalfYearLastDay(java.sql.Date date) { boolean i = false; if (((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 12) && (DateTimeUtil .getYearMonthDate(date.toString(), "D") == 31)) || ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 6) && (DateTimeUtil .getYearMonthDate(date.toString(), "D") == 30))) { i = true; } return i; } /*** * 取半年最后一天 * @param date s * @return s */ public static String getHalfYearLastDay(java.sql.Date date) { String month = "-06-30"; if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 7) { month = "-12-31"; } String day = Integer.toString(getYearMonthDate(date.toString(), "Y")) + "-" + month; return day; } /*** *是否是年度最后一天 * @param date s * @return s */ public static boolean isYearLastDay(java.sql.Date date) { boolean i = false; if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 12) && (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 31)) { i = true; } return i; } /** * 是否季度第一天 * @param date s * @return s */ public static boolean isQuarterFirstDay(java.sql.Date date) { boolean i = false; if (((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 1) || (DateTimeUtil.getYearMonthDate(date.toString(), "M") == 4) || (DateTimeUtil.getYearMonthDate(date.toString(), "M") == 7) || (DateTimeUtil .getYearMonthDate(date.toString(), "M") == 10)) && (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 1)) { i = true; } return i; } /*** * 季度第一天 * @param date s * @return s */ public static String getQuarterFirstDay(java.sql.Date date) { String month = "01"; if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 10) { month = "10"; } else if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 7) { month = "07"; } else if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 4) { month = "04"; } else if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 1) { month = "01"; } String day = Integer.toString(DateTimeUtil.getYearMonthDate( date.toString(), "Y")) + "-" + month + "-01"; return day; } /** * 是否季度最后一天 * @param date s * @return s */ public static boolean isQuarterLastDay(java.sql.Date date) { boolean i = false; if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 3) && (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 31)) { i = true; } if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 6) && (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 30)) { i = true; } if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 9) && (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 30)) { i = true; } if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 12) && (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 31)) { i = true; } return i; } /** * 季度最后一天 * @param date s * @return s */ public static String getQuarterLastDay(java.sql.Date date) { String month = "-03-31"; if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 10) { month = "-12-31"; } else if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 7) { month = "-09-30"; } else if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 4) { month = "-06-30"; } String day = Integer.toString(DateTimeUtil.getYearMonthDate( date.toString(), "Y")) + "-" + month; return day; } /*** * 是否月份最后一天 * @param date s * @return s */ public static boolean isMonthLastDay(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar.getActualMaximum(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH); } /** * 是否月份第一天 * @param date s * @return s */ public static boolean isMonthFisrtDay(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar.getActualMinimum(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH); } /** * 月份第一天日期 * @param date dd * @return d */ public static Date getMonthFisrtDay(Date date){ Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); return calendar.getTime(); } /** * 星期的第几天 * @param strDate yy-mm-dd * @return d */ public static int getDateInWeek(String strDate) { DateFormat df = DateFormat.getDateInstance(); try { df.parse(strDate); Calendar c = df.getCalendar(); int day = c.get(Calendar.DAY_OF_WEEK) - Calendar.SUNDAY; return day; } catch (ParseException e) { return -1; } } /** * sss * @param date s * @return s */ public static java.sql.Date getSqlDate(Date date) { java.sql.Date result = null; try { SimpleDateFormat myFormat = new SimpleDateFormat(LONG_FORMAT); String mystrdate = myFormat.format(date); result = java.sql.Date.valueOf(mystrdate); } catch (Exception e) { return null; } return result; } /** * 上个月 * @param dt s * @return s */ @SuppressWarnings("deprecation") public static String getUpMDate(Date dt) { dt.setDate(1); dt.setDate(dt.getDate() - 1); return dt.toLocaleString(); } /** * ss * @param dt s * @return s */ public static String getShortDateString(String dt) { if (dt != null) { SimpleDateFormat myFormat = new SimpleDateFormat(SHORT_DATE_FORMAT); try { Date date = myFormat.parse(dt); return getCurrentDateString(date, SHORT_DATE_FORMAT_NO_SPIT); } catch (ParseException e) { return dt; } } else return dt; } public static String getLongDateString(String dt) { if (dt != null) { SimpleDateFormat myFormat = new SimpleDateFormat(SHORT_DATE_FORMAT); try { Date date = myFormat.parse(dt); return getCurrentDateString(date, SHORT_DATE_FORMAT); } catch (ParseException e) { return dt; } } else return dt; } public static boolean isSameYearMonth(String date) { try { String currdate = DateTimeUtil.getCurrentDateString(); currdate = getShortDateString(currdate).substring(0, 6); String lastdate = getShortDateString(date).substring(0, 6); if (lastdate.equals(currdate)) { return true; } else { return false; } } catch (NumberFormatException e) { return false; } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy