zoukankan      html  css  js  c++  java
  • java/javascript 时间操作工具类

    一、java 时间操作工具类

    import org.springframework.util.StringUtils;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.List;
    
    /**
     * 时间操作工具类
     *
     * @author zwq
     *
     */
    public class TimeFrameUtil {
    
        /**
         * 获取今天的时间范围
         * @return 返回长度为2的字符串集合,如:[2017-11-03 00:00:00, 2017-11-03 24:00:00]
         */
        public static List<String> getTodayRange() {
            List<String> dataList = new ArrayList<>(2);
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.add(Calendar.DATE, 0);
            String today = dateFormat.format(calendar.getTime());
            dataList.add(today + " 00:00:00");
            dataList.add(today + " 24:00:00");
            return dataList;
        }
    
        /**
         * 获取昨天的时间范围
         * @return 返回长度为2的字符串集合,如:[2017-11-02 00:00:00, 2017-11-02 24:00:00]
         */
        public static List<String> getYesterdayRange() {
            List<String> dataList = new ArrayList<>(2);
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.add(Calendar.DATE, -1);
            String yesterday = dateFormat.format(calendar.getTime());
            dataList.add(yesterday + " 00:00:00");
            dataList.add(yesterday + " 24:00:00");
            return dataList;
        }
    
        /**
         * 获取本周的时间范围
         * @return 返回长度为2的字符串集合,如:[2017-10-30 00:00:00, 2017-11-05 24:00:00]
         */
        public static List<String> getCurrentWeekRange() {
            List<String> dataList = new ArrayList<>(2);
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            Calendar calendar = Calendar.getInstance();
            calendar.setFirstDayOfWeek(Calendar.MONDAY);//设置周一为一周之内的第一天
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
            String monday = dateFormat.format(calendar.getTime()) + " 00:00:00";
            calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
            String sunday = dateFormat.format(calendar.getTime()) + " 24:00:00";
            dataList.add(monday);
            dataList.add(sunday);
            return dataList;
        }
    
        /**
         * 获取本周的时间范围(不带时分秒)
         * @return 返回长度为2的字符串集合,如:[2017-10-30, 2017-11-05]
         */
        public static List<String> getCurrentWeekRangeNoTime() {
            List<String> dataList = new ArrayList<>(2);
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            Calendar calendar = Calendar.getInstance();
            calendar.setFirstDayOfWeek(Calendar.MONDAY);//设置周一为一周之内的第一天
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
            String monday = dateFormat.format(calendar.getTime());
            calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
            String sunday = dateFormat.format(calendar.getTime());
            dataList.add(monday);
            dataList.add(sunday);
            return dataList;
        }
    
        /**
         * 获取本月的时间范围
         * @return 返回长度为2的字符串集合,如:[2017-11-01 00:00:00, 2017-11-30 24:00:00]
         */
        public static List<String> getCurrentMonthRange() {
            List<String> dataList = new ArrayList<>(2);
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.add(Calendar.MONTH, 0);
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            String firstDayOfMonth = dateFormat.format(calendar.getTime()) + " 00:00:00";
            calendar.add(Calendar.MONTH, 1);
            calendar.set(Calendar.DAY_OF_MONTH, 0);
            String lastDayOfMonth = dateFormat.format(calendar.getTime()) + " 24:00:00";
            dataList.add(firstDayOfMonth);
            dataList.add(lastDayOfMonth);
            return dataList;
        }
    
        /**
         * 获取本年的时间范围
         * @return 返回长度为2的字符串集合,如:[2017-01-01 00:00:00, 2017-12-31 24:00:00]
         */
        public static List<String> getCurrentYearRange() {
            List<String> dataList = new ArrayList<>(2);
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.add(Calendar.YEAR, 0);
            calendar.set(Calendar.DAY_OF_YEAR, 1);
            String firstDayOfYear = dateFormat.format(calendar.getTime()) + " 00:00:00";
            calendar.add(Calendar.YEAR, 1);
            calendar.set(Calendar.DAY_OF_YEAR, 0);
            String lastDayOfYear = dateFormat.format(calendar.getTime()) + " 24:00:00";
            dataList.add(firstDayOfYear);
            dataList.add(lastDayOfYear);
            return dataList;
        }
    
        /**
         * 获取最近几天的时间范围
         * @param lastFewDays 最近多少天
         * @return 返回长度为2的字符串集合,如:[2017-12-25 17:15:33, 2017-12-26 17:15:33]
         */
        public static List<String> getLastFewDaysRange(int lastFewDays) {
            List<String> dataList = new ArrayList<>(2);
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            String endTime = dateFormat.format(calendar.getTime());
            calendar.add(Calendar.DATE, -lastFewDays);
            String startTime = dateFormat.format(calendar.getTime());
            dataList.add(startTime);
            dataList.add(endTime);
            return dataList;
        }
    
        /**
         * 获取当前时间
         * @param pattern 指定返回当前时间的格式,例:"yyyy-MM-dd HH:mm:ss"
         * @return 返回指定格式的当前时间,如:"2018-01-25 10:14:30"
         */
        public static String getCurrentTime(String pattern) {
            String currentTime;
            SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            currentTime = dateFormat.format(calendar.getTime());
            return currentTime;
        }
    
        /***
         * 将指定时间偏移几小时
         * @param time 指定时间,精确到分,例:"2018-01-25 10:48"
         * @param offset 偏移量:负数代表减几个小时,正数代表加几个小时,例:1
         * @return 返回偏移后的时间,如:"2018-01-25 11:48"
         * @throws ParseException
         */
        public static String offsetHours(String time, int offset) throws ParseException {
            String offsetHours = null;
            if (StringUtils.hasText(time)) {
                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                Calendar calendar = Calendar.getInstance();
                calendar.setTime(dateFormat.parse(time));
                calendar.add(Calendar.MINUTE, offset);
                offsetHours = dateFormat.format(calendar.getTime());
            }
            return offsetHours;
        }
    
        /**
         * 将指定月份偏移几个月
         * @param month 指定月份
         * @param offset 偏移量:负数代表上几个月,正数代表下几个月
         * @return 返回偏移后的月份,如:2018-01
         * @throws ParseException
         */
        public static String offsetMonths(String month, int offset) throws ParseException {
            String offsetMonth = null;
            if (StringUtils.hasText(month)) {
               SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
               Calendar calendar = Calendar.getInstance();
               calendar.setTime(dateFormat.parse(month));
               calendar.add(Calendar.MONTH, offset);
               offsetMonth = dateFormat.format(calendar.getTime());
            }
            return offsetMonth;
        }
    
        /**
         * 获取指定日期是星期几(设置星期一为一周的开始)
         * @param day 指定日期
         * @return 返回星期几,如:1
         * @throws ParseException
         */
        public static int getDayOfWeek(String day) throws ParseException {
            int dayOfWeek = 0;
            if (StringUtils.hasText(day)) {
                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
                Calendar calendar = Calendar.getInstance();
                calendar.setTime(dateFormat.parse(day));
                calendar.add(Calendar.DATE, -1); //在指定日期的基础上减一天,满足中国人的习惯
                dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
            }
            return dayOfWeek;
        }
    
        /**
         * 获取指定月份有多少天
         * @param month 指定月份
         * @return 返回天数,如:31
         * @throws ParseException
         */
        public static int getDaysInMonth(String month) throws ParseException {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(dateFormat.parse(month));
            calendar.add(Calendar.MONTH, 1);
            calendar.set(Calendar.DAY_OF_MONTH, 0);
            return calendar.get(Calendar.DAY_OF_MONTH);
        }
    
    }

    二、javascript 时间操作工具类

    /**
     * 时间操作工具类
     *
     * @author zwq
     *
     */
    var TimeFrameUtil = {
        /**
         * 格式化日期
         * @param date {Date} 日期
         * @param pattern {string} 格式,例:"yyyy-MM-dd HH:mm:ss"
         * @returns {String} 返回格式化后的日期,如:"2018-01-22 18:04:30"
         */
        format : function (date, pattern) {
            var time = {
                "M+": date.getMonth() + 1,
                "d+": date.getDate(),
                "H+": date.getHours(),
                "m+": date.getMinutes(),
                "s+": date.getSeconds(),
                "q+": Math.floor((date.getMonth() + 3) / 3),
                "S+": date.getMilliseconds()
            };
            if (/(y+)/i.test(pattern)) {
                pattern = pattern.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
            }
            for (var k in time) {
                if (new RegExp("(" + k + ")").test(pattern)) {
                    pattern = pattern.replace(RegExp.$1, RegExp.$1.length == 1 ? time[k] : ("00" + time[k]).substr(("" + time[k]).length));
                }
            }
            return pattern;
        },
        /**
         * 将指定时间偏移几小时
         * @param time {String} 指定时间,例:"2018-01-24 17:00"
         * @param offset {Number} 偏移量,正数代表加几小时,负数代表减几小时,例:1
         * @param pattern {String} 返回时间的格式,例:"yyyy-MM-dd HH:mm"
         * @returns {String} 返回计算后的时间,如:"2018-01-24 18:00"
         */
        offsetHours : function (time, offset, pattern) {
            var date = new Date(Date.parse(time));
            var yyyy = date.getFullYear();
            var MM = date.getMonth();
            var dd = date.getDate();
            var HH = date.getHours() + offset;
            var mm = date.getMinutes();
            var ss = date.getSeconds();
            return this.format(new Date(yyyy, MM, dd, HH, mm, ss), pattern);
        },
        /**
         * 将指定月份偏移几个月
         * @param month {String} 指定月份,例:"2018-01"
         * @param offset {Number} 偏移量,负数代表上几个月,正数代表下几个月,例:1
         * @returns {String} 返回计算后的月份,如:"2018-02"
         */
        offsetMonths : function (month, offset) {
            var date = new Date(Date.parse(month));
            var year = date.getFullYear();
            var month = date.getMonth();
            var preOrNextMonth = month + offset;
            return this.format(new Date(year, preOrNextMonth), "yyyy-MM");
        },
        /**
         * 获取指定日期是星期几
         * @param date {String} 指定日期,例:"2018-01-23"
         * @returns {Number} 返回星期几(1-7),如:2
         */
        dayOfWeek : function (date) {
            var time = new Date(Date.parse(date));
            var weekday=new Array(7);
            weekday[0]= 7;
            weekday[1]= 1;
            weekday[2]= 2;
            weekday[3]= 3;
            weekday[4]= 4;
            weekday[5]= 5;
            weekday[6]= 6;
            return weekday[time.getDay()];
        },
        /**
         * 获取指定月份有多少天
         * @param month {String} 指定月份:例"2018-01"
         * @returns {number} 返回指定月份有多少天,如:31
         */
        daysInMonth : function (month) {
            var date = new Date(Date.parse(month));
            var year = date.getFullYear();
            var month = date.getMonth();
            if (month == 1) {
                if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
                    return 29;
                else
                    return 28;
            } else if ((month <= 6 && month % 2 == 0) || (month > 6 && month % 2 == 1))
                return 31;
            else
                return 30;
        }
    };
  • 相关阅读:
    小胖IT大讲堂之二 Hook实战(一) 魔兽改键工具
    介绍介绍草泥马
    ASP.NET服务端操作ActiveX报错灾难性故障的问题和解决办法
    ASP.NET网络映射驱动器无权限访问的解决方案
    Visual Studio快捷键
    4.2.8 Dating with girls(2)
    4.3.2 Prime Ring Problem
    4.2.3 Knight Moves
    4.2.1 Rescue
    4.2.7 Waiting ten thousand years for Love
  • 原文地址:https://www.cnblogs.com/zhuwenqi2016/p/7779648.html
Copyright © 2011-2022 走看看