import net.sf.json.JSONObject; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateUtil { private DateUtil (){} private final static SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy"); private final static SimpleDateFormat sdfDay = new SimpleDateFormat( "yyyy-MM-dd"); private final static SimpleDateFormat sdfDays = new SimpleDateFormat( "yyyyMMdd"); private final static SimpleDateFormat sdfTime = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); private final static SimpleDateFormat sdfTimes = new SimpleDateFormat( "yyyyMMddHHmmss"); private final static SimpleDateFormat HmsTime = new SimpleDateFormat( "HH:mm:ss"); /** * 获取YYYY-MM-DD HH:mm:ss格式 * * @return */ public static String getTime(String time) { return sdfTime.format(fomatTime(time)); } /** * 获取YYYY格式 * * @return */ public static String getYear() { return sdfYear.format(new Date()); } /** * 获取YYYY-MM-DD格式 * * @return */ public static String getDay() { return sdfDay.format(new Date()); } /** * 获取YYYYMMDD格式 * * @return */ public static String getDays(){ return sdfDays.format(new Date()); } /** * 获取YYYY-MM-DD HH:mm:ss格式 * * @return */ public static String getTime() { return sdfTime.format(new Date()); } /** * 获取YYYYMMDDHHmmss格式 * * @return */ public static String getTimes() { return sdfTimes.format(new Date()); } /** * @Title: compareDate * @Description: TODO(日期比较,如果s>=e 返回true 否则返回false) * @param s * @param e * @return boolean * @throws */ public static boolean compareDate(String s, String e) { if(fomatDate(s)==null||fomatDate(e)==null){ return false; } return fomatDate(s).getTime() >=fomatDate(e).getTime(); } /** * @Title: compareDateToNow * @Description: TODO(日期比较,判断当前时间点是否在begin与end区间) * @param begin * @param end * @return boolean * @throws */ public static boolean compareDateToNow(String begin, String end) { boolean isIn = false; if (Tools.notEmpty(begin)&&Tools.notEmpty(end)){ if(fomatTimeHmd(begin)==null||fomatTimeHmd(end)==null){ isIn = false; } String now = HmsTime.format(new Date()); if (fomatTimeHmd(begin).getTime() <=fomatTimeHmd(now).getTime()&&fomatTimeHmd(end).getTime() >=fomatTimeHmd(now).getTime()){ isIn = true; }else { isIn = false; } } else { isIn = false; } return isIn; } /** * 格式化日期 * * @return */ public static Date fomatDate(String date) { DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); try { return fmt.parse(date); } catch (ParseException e) { e.printStackTrace(); return null; } } /** * 格式化日期 * * @return */ public static Date fomatTimeHmd(String date) { DateFormat fmt = new SimpleDateFormat("HH:mm:ss"); try { return fmt.parse(date); } catch (ParseException e) { e.printStackTrace(); return null; } } public static Date fomatTime(String date) { DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { return fmt.parse(date); } catch (ParseException e) { e.printStackTrace(); return null; } } /** * 校验日期是否合法 * * @return */ public static boolean isValidDate(String s) { DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); try { fmt.parse(s); return true; } catch (Exception e) { // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对 return false; } } public static int getDiffYear(String startTime,String endTime) { DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); try { long aa=0; int years=(int) (((fmt.parse(endTime).getTime()-fmt.parse(startTime).getTime())/ (1000 * 60 * 60 * 24))/365); return years; } catch (Exception e) { // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对 return 0; } } /** * <li>功能描述:时间相减得到天数 * @param beginDateStr * @param endDateStr * @return long */ public static long getDaySub(String beginDateStr,String endDateStr){ long day=0; java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd"); java.util.Date beginDate = null; java.util.Date endDate = null; try { beginDate = format.parse(beginDateStr); endDate= format.parse(endDateStr); } catch (ParseException e) { e.printStackTrace(); } day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000); //System.out.println("相隔的天数="+day); return day; } /** * <li>功能描述:传入时间和当前时间相减得到秒数 * @param beginDateStr * @return long */ public static long getSecondSubWithNow(String beginDateStr){ long day=0; java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date beginDate = null; Date dt=new Date(); try { beginDate = format.parse(beginDateStr); } catch (ParseException e) { e.printStackTrace(); } day=(dt.getTime()-beginDate.getTime())%(24*60*60*1000)%(1000*60*60)/1000; //System.out.println("相隔的天数="+day); return day; } /** * 得到n天之后的日期 * @param days * @return */ public static String getAfterDayDate(String days) { int daysInt = Integer.parseInt(days); Calendar canlendar = Calendar.getInstance(); // java.util包 canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动 Date date = canlendar.getTime(); SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateStr = sdfd.format(date); return dateStr; } /** * 得到n天之后是周几 * @param days * @return */ public static String getAfterDayWeek(String days) { int daysInt = Integer.parseInt(days); Calendar canlendar = Calendar.getInstance(); // java.util包 canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动 Date date = canlendar.getTime(); SimpleDateFormat sdf = new SimpleDateFormat("E"); String dateStr = sdf.format(date); return dateStr; } /** * 取得当前时间戳(13位) * @return */ public static String timeStampMillisecond(){ long time = System.currentTimeMillis(); String t = String.valueOf(time/1); return t; } /** * 取得当前时间戳(10位) * @return */ public static String timeStampSecond(){ long time = System.currentTimeMillis(); String t = String.valueOf(time/1000); return t; } public static boolean holiday() { String now = sdfDays.format(new Date()); String httpUrl="http://api.goseek.cn/Tools/holiday"; BufferedReader reader = null; boolean result = false; StringBuffer sbf = new StringBuffer(); httpUrl = httpUrl + "?date=" + now; try { URL url = new URL(httpUrl); HttpURLConnection connection = (HttpURLConnection) url .openConnection(); connection.setRequestMethod("GET"); connection.connect(); InputStream is = connection.getInputStream(); reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); String strRead = null; while ((strRead = reader.readLine()) != null) { sbf.append(strRead); sbf.append("\r\n"); } reader.close(); String results = sbf.toString(); JSONObject json = JSONObject.fromObject(results); String data = json.get("data")+""; // 工作日对应结果为 0, 休息日对应结果为 1, 节假日对应的结果为 2 if (data.equals("2")){ result = true; } else { result = false; } } catch (Exception e) { e.printStackTrace(); } return result; } public static String date2TimeStamp(String date_str,String format){ try { SimpleDateFormat sdf = new SimpleDateFormat(format); return String.valueOf(sdf.parse(date_str).getTime()/1000); } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 获取当前日期是星期几<br> * * @return 当前日期是星期几 */ public static String getWeekOfDate() { Date date=new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(date); int w = cal.get(Calendar.DAY_OF_WEEK) - 1; if (w < 0) w = 0; System.out.println(w); return String.valueOf(w); } public static void main(String[] args) { //String timeStamp = timeStampSecond(); // String timeStamp = getTimes(); // System.out.println("timeStamp="+timeStamp); // System.out.println(getDays()); // System.out.println(getAfterDayWeek("3")); System.out.println(getTime("2018-01-28 18:19:30.0")); // System.out.println(getSecondSubWithNow("2018-01-28 18:19:30")); } }
时间工具类
最新推荐文章于 2024-09-12 23:58:52 发布