日期格式转化工具类(添加获取网络时间方法)
在原有的基础上增加获取网络时间方法。获取网络时间的方法来自于:http://blog.csdn.net/catoop/article/details/50076879
import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * Created by zhangss on 2017/8/24. */ public class DateUtil { // 默认日期格式 private static String defaultDatePattern = "yyyy-MM-dd HH:mm:ss"; public static SimpleDateFormat dateFormatter = new SimpleDateFormat(defaultDatePattern); private static String TIME_URL_BAIDU = "http://www.baidu.com"; private static String TIME_URL_TAOBAO = "http://www.taobao.com"; private static String TIME_URL_NTSC = "http://www.ntsc.ac.cn"; /** * 获取默认的数据格式 * * @return String * */ public static String getDefaultDatePattern() { return defaultDatePattern; } /** * 返回预设Format的当前日期字符串 * * @return String 默认格式 */ public static String getToday() { Date today = new Date(); return format(today); } /** * 获取格式化后的当前日期 * * @param pattern 日期格式 * * @return Date * */ public static Date getTodyByPattern(String pattern) { SimpleDateFormat df = new SimpleDateFormat(pattern); return DateUtil.string2Date(df.format(new Date()), pattern); } /** * 使用默认Format格式化Date成字符串 * * @param date * * @return String 使用默认格式 */ public static String format(Date date) { return format(date, getDefaultDatePattern()); } /** * 使用参数Format格式化Date成字符串 * * @param date * @param pattern * * @return String 使用用户传入的格式 */ public static String format(Date date, String pattern) { String returnValue = ""; if (date != null) { SimpleDateFormat df = new SimpleDateFormat(pattern); returnValue = df.format(date); } return (returnValue); } /** * 将字符串转为Date * * @param strDate 时间字符串 * @param pattern 时间格式 * * @return Date */ public static Date string2Date(String strDate, String pattern) { SimpleDateFormat df = new SimpleDateFormat(pattern); try { return df.parse(strDate); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 将Date串转为新格式的Date * * @param strDate 时间字符串 * @param pattern 时间格式 * * @return Date */ public static Date date2Date(Date strDate, String pattern) { SimpleDateFormat df = new SimpleDateFormat(pattern); try { return df.parse(df.format(strDate)); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 根据所传的格式,格式化想要处理的date 格式 * * @param date * @param pattern * * @return String */ public static String dateFormatterByPattern(Date date, String pattern) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); if (date != null) { return sdf.format(date); } else { return sdf.format(new Date()); } } /** * 比较两个日期的前后,前面的日期在后,则为true * * @param date1 * @param date2 * * @return boolean */ public static boolean equals(Date date1, Date date2) { return date1.getTime() >= date2.getTime(); } /** * 比较两个日期的前后,前面的日期在后,则为true * * @param date1 * @param date2 * * @return boolean */ public static boolean isDateAfter(Date date1, Date date2) { return date1.getTime() >= date2.getTime(); } /** * 是否过期,过期true,未过期false * * @param endTime * * @return boolean */ public static boolean isGuoqi(Date endTime) { Date today = new Date(); return today.getTime() > endTime.getTime(); } /** * 比较两个日期字符串的先后,前面的日期在后,则为true * * @param date1 * @param date2 * * @return boolean */ public static boolean isDateAfter(String date1, String date2, String pattern) { Date datea = toCalendar(date1, pattern).getTime(); Date dateb = toCalendar(date2, pattern).getTime(); return DateUtil.isDateAfter(datea, dateb); } /** * 比较当前日期和传入日期的先后 * * @param date * * @return boolean * */ public static boolean isDateInvalidation(Date date) { Date date2 = new Date(); return DateUtil.isDateAfter(date2, date); } /** * 从一个日期字符串中取出它的年份 * * @param strDate * @param pattern * * @return int */ public static final Integer getYear(String strDate, String pattern) { pattern = "".equals(pattern) ? defaultDatePattern : pattern; Calendar cale = toCalendar(strDate, pattern); if (cale == null) { return -1; } return cale.get(Calendar.YEAR); } /** * 从一个日期字符串中取出它的月份 * * @param strDate * @param pattern * * @return int */ public static final int getMonth(String strDate, String pattern) { pattern = "".equals(pattern) ? defaultDatePattern : pattern; Calendar cale = toCalendar(strDate, pattern); if (cale == null) { return -1; } return cale.get(Calendar.MONTH) + 1; } /** * 从一个日期字符串中取出它的日期 * * @param strDate * @param pattern * * @return int */ public static final int getDate(String strDate, String pattern) { pattern = "".equals(pattern) ? defaultDatePattern : pattern; Calendar cale = toCalendar(strDate, pattern); if (cale == null) { return -1; } return cale.get(Calendar.DATE); } /** * 把一个日期字符串转换成Calendar形式 * * @param strDate * @param pattern * * @return Calendar */ private static final Calendar toCalendar(String strDate, String pattern) { pattern = "".equals(pattern) ? defaultDatePattern : pattern; Calendar cale = null; try { Date thisDate = string2Date(strDate, pattern); cale = Calendar.getInstance(); cale.setTime(thisDate); } catch (Exception e) { return null; } return cale; } /** * 返回昨天的日期字符串 * * @param pattern * * @return String */ public static final String getYesday(String pattern) { Date date = getTodyByPattern(pattern); String strDate = format(date, pattern); Calendar cale = toCalendar(strDate, pattern); cale.add(Calendar.DAY_OF_YEAR, -1); return dateFormatterByPattern(cale.getTime(), pattern); } /** * 计算出strDate之后days天后的日期字符串 days可以为负数 * * @param strDate yyyy-MM-dd * @param days * * @return String */ public static final String addDayToString(String strDate, int days) { Calendar cale = toCalendar(strDate, defaultDatePattern); cale.add(Calendar.DAY_OF_YEAR, days); return dateFormatterByPattern(cale.getTime(), defaultDatePattern); } /** * 此函数计算出date之后days天后的日期,days可以是负数 * * @param days * @return */ public static final Date addDay(Date date, int days) { Calendar cale = Calendar.getInstance(); cale.setTime(date); cale.add(Calendar.DAY_OF_YEAR, days); return cale.getTime(); } /** * 指定日期之后moths个月的日期,Months可以是负数 * * @param date * @param months * * @return Date */ public static final Date addMonth(Date date, int months) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MONTH, months); return cal.getTime(); } /** * 计算出指定日期之后moths个月的日期,Months可以是负数 * * @param strDate * @param months * * @return */ public static final String addMonth(String strDate, int months) { Date date; try { date = dateFormatter.parse(strDate); } catch (ParseException e) { return null; } Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MONTH, months); return dateFormatterByPattern(cal.getTime(), "yyyy-MM-dd"); } /** * 获取2个日期间相差的天数 * * @param date1 * @param date2 * * @return int * */ public static final int getDays(Date date1, Date date2) { Long days = date1.getTime() - date2.getTime(); return (int) (days / 1000 / 3600 / 24); } /** * 获取2个日期间相差的分钟数 * * @param date1 * @param date2 * * @return int * */ public static final int getMinute(Date date1, Date date2) { Long days = date1.getTime() - date2.getTime(); return (int) (days / 1000 / 60); } /** * 计算传入的日期是星期几 * * @param date * * @return int */ public static int getWeek(Date date){ Calendar c = Calendar.getInstance(); c.setTime(date); int day = c.get(Calendar.DAY_OF_WEEK); if(day == 1){ return 7; }else{ return day-1; } } /** * 根据日期算出这一周的日期 * * @param date * * @return List<Date> */ public static List<Date> dateToWeek(Date date){ int b=DateUtil.getWeek(date); Date fdate ; List<Date> list = new ArrayList<Date>(); Long fTime=date.getTime()-b*24*3600000; for(int a=0;a<8;a++){ fdate= new Date(); fdate.setTime(fTime+(a*24*3600000)); list.add(a, fdate); } return list; } /** * 根据日期计算出星期一的日期 * * @param date * @throws ParseException * * @return String */ public static String getMonday(String date){ return DateUtil.format(DateUtil.dateToWeek(DateUtil.string2Date(date, defaultDatePattern)).get(1)); } /** * 根据日期计算出星期天的日期 * * @param date * @throws ParseException * * @return String */ public static String getSunDay(String date){ List<Date> dates; dates = DateUtil.dateToWeek(DateUtil.string2Date(date, defaultDatePattern)); return DateUtil.format(dates.get(dates.size()-1)); } /** * 根据日期得出第二天日期 * * @param date * * @return String */ @SuppressWarnings("static-access") public static String getTomrrow(Date date){ Calendar calendar = new GregorianCalendar(); calendar.setTime(date); calendar.add(calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动 return DateUtil.format(calendar.getTime()); //这个时间就是日期往后推一天的结果 } /** * 根据日期得出前一天日期 * * @throws ParseException * * @return String */ @SuppressWarnings("static-access") public static String getYesterday(Date date){ Calendar calendar = new GregorianCalendar(); calendar.setTime(date); calendar.add(calendar.DATE,-1);//把日期往后增加一天.整数往后推,负数往前移动 return DateUtil.format(calendar.getTime()); //这个时间就是日期往后推一天的结果 } /** * 获取下一分钟的格式化字符串 * 格式yyyy-MM-dd HH:mm:ss * @Param date * @return String * */ public static String getNextMin(Date date){ date = new Date(date.getTime() + 1000*60); return format(date); } /** * 获取下一分钟的格式化字符串 * 格式需要传入 * @Param date * @param pattern * @return String * */ public static String getNextMin(Date date, String pattern){ date = new Date(date.getTime() + 1000*60); return format(date, pattern); } /** * 获取下一分钟的格式化字符串 * 格式需要传入 * @Param dateStr * @param pattern * @return String * */ public static String getNextMin(String dateStr, String pattern){ Date nDate = string2Date(dateStr, pattern); nDate = new Date(nDate.getTime() + 1000*60); return format(nDate, pattern); } /** * 获取指定网站的日期时间 * * @param webUrl * @param pattern */ private static String getWebsiteDatetime(String webUrl, String pattern){ try { URL url = new URL(webUrl);// 取得资源对象 URLConnection uc = url.openConnection();// 生成连接对象 uc.connect();// 发出连接 long ld = uc.getDate();// 读取网站日期时间 Date date = new Date(ld);// 转换为标准时间对象 SimpleDateFormat sdf = new SimpleDateFormat(pattern, Locale.CHINA);// 输出北京时间 return sdf.format(date); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } public static String getBAIDUTime(){ return getWebsiteDatetime(TIME_URL_BAIDU, defaultDatePattern); } public static String getNTSCTime(){ return getWebsiteDatetime(TIME_URL_NTSC, defaultDatePattern); } public static String getTAOBAOTime(){ return getWebsiteDatetime(TIME_URL_TAOBAO, defaultDatePattern); } public static String getBAIDUTime(String pattern){ return getWebsiteDatetime(TIME_URL_BAIDU, pattern); } public static String getNTSCTime(String pattern){ return getWebsiteDatetime(TIME_URL_NTSC, pattern); } public static String getTAOBAOTime(String pattern){ return getWebsiteDatetime(TIME_URL_TAOBAO, pattern); } public static void main(String[] args){ DateUtil util = new DateUtil(); System.out.println(new Date()); System.out.println(util.getToday()); System.out.println(util.format(new Date())); Date startDate = new Date(2017-1900, 7, 24, 14,0); Date endDate = new Date(2017-1900, 7, 26, 14,0); System.out.println(getMinute( endDate, startDate)/3); } }