• 日期格式转化工具类(添加获取网络时间方法)


    在原有的基础上增加获取网络时间方法。获取网络时间的方法来自于: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);
        }
    }
  • 相关阅读:
    Scraping JavaScript webpages with webkit | WebScraping.com
    linux命令行抓取网页快照-(xvfb+CutyCapt)
    Xvfb+YSlow+ShowSlow搭建前端性能测试框架
    Lind.DDD.Paging分页模块介绍
    Lind.DDD.IoC依赖注入与面向方面的实现
    Lind.DDD.Caching分布式数据集缓存介绍
    Lind.DDD.Events领域事件介绍
    知方可补不足~sqlserver中的几把锁~续
    BUG: scheduling while atomic: events/0/4/总结
    真正理解javascript的五道题目.
  • 原文地址:https://www.cnblogs.com/zsslll/p/6755897.html
Copyright © 2020-2023  润新知