angular--获取时间方法services


写了一些公用方法获取自然周、传入开始和结束日期,获取中间全部日期等方法

.service('DateServices', [function () {
        // 获取某年自然周的方法 (如果是当年,只返回到一月到当前月的自然周数组)
        this.get = function zhou(z) {
            var week_arr = [];
            for (var i = 12; i > 0; i--) {
                week_arr.unshift(getInfo(z, i));
            }
            //定义空字符串
            var str_week = [];
            for (var j = week_arr.length - 1; j >= 0; j--) {
                for (var o = 0; o < week_arr[j].length; o++) {
                    str_week.unshift(week_arr[j][o]);
                }
            }
            var option_list = [];
            var nowY = new Date().getFullYear();
            var nowM = new Date().getMonth() + 1;
            for (var f = str_week.length - 1; f >= 0; f--) {
                var first = str_week[f].split("|")[0].split('-');
                if (first[1] < 10) {
                    first[1] = '0' + first[1]
                }
                if (first[2] < 10) {
                    first[2] = '0' + first[2]
                }
                var second = str_week[f].split("|")[1].split('-');
                if (second[1] < 10) {
                    second[1] = '0' + second[1]
                }
                if (second[2] < 10) {
                    second[2] = '0' + second[2]
                }
                var option = first[0] + '-' + first[1] + '-' + first[2] + '至' + second[0] + '-' + second[1] + '-' + second[2];
                if ((first[0] < nowY) || (first[0] == nowY && first[1] <= nowM)) {
                    option_list.push(option);
                }
            }
            return option_list;
        }

        // 获取当前周日期
        this.getCurrentWeek = function () {
            var now = new Date();
            var nowTime = now.getTime();
            var day = now.getDay();
            var oneDayTime = 24 * 60 * 60 * 1000;
            var MondayTime = nowTime - (day - 1) * oneDayTime;
            var SundayTime = nowTime + (7 - day) * oneDayTime;
            var monday = new Date(MondayTime);
            var sunday = new Date(SundayTime);
            return formatDate(monday) + '至' + formatDate(sunday)
        }

        //根据开始日期和结束日期获取所有日期的方法
        this.getDate = function (day1, day2) {
            var getDate = function (str) {
                var tempDate = new Date();
                var list = str.split("-");
                tempDate.setFullYear(list[0]);
                tempDate.setMonth(list[1] - 1);
                tempDate.setDate(list[2]);
                return tempDate;
            }
            var date1 = getDate(day1);
            var date2 = getDate(day2);
            if (date1 > date2) {
                var tempDate = date1;
                date1 = date2;
                date2 = tempDate;
            }
            date1.setDate(date1.getDate() + 1);
            var dateArr = [];
            var i = 0;
            while (!(date1.getFullYear() == date2.getFullYear()
            && date1.getMonth() == date2.getMonth() && date1.getDate() == date2
                .getDate())) {
                var dayStr = date1.getDate().toString();
                var monthStr = (date1.getMonth() + 1).toString()
                if (dayStr.length == 1) {
                    dayStr = "0" + dayStr;
                }
                if (monthStr.length == 1) {
                    monthStr = "0" + monthStr;
                }
                dateArr[i] = date1.getFullYear() + "-" + monthStr + "-"
                    + dayStr;
                i++;
                /*
                 * document.write("<div style='display:block'>" + date1.getFullYear() +
                 * "-" + (date1.getMonth() + 1) + "-" + date1.getDate() + "</div>");
                 */
                // document.write(dateArr[i] + "<br>");
                date1.setDate(date1.getDate() + 1);
            }
            dateArr.splice(0, 0, day1)
            dateArr.push(day2);
            return dateArr;
        }
        // 获取最近12个月数组
        this.getRecentlyMonth = function () {//获取近12月日期
            var dataArr = [];
            var data = new Date();
            var year = data.getFullYear();
            data.setMonth(data.getMonth() + 1)//获取到当前月份,设置月份
            for (var i = 0; i < 12; i++) {
                data.setMonth(data.getMonth() - 1);//每次循环一次 月份值减1
                var month = data.getMonth() + 1;
                if (month < 10) {
                    month = '0' + month;
                }
                dataArr.push(data.getFullYear() + "-" + month)
            }
            return dataArr.reverse();
        };

        // 获取某年某月最后一天
        this.getDaysInOneMonth = function(year, month) {
            month = parseInt(month, 10);
            var d = new Date(year, month, 0);
            return d.getDate();
        };

        function getInfo(year, month) {
            var d = new Date();
            // what day is first day
            d.setFullYear(year, month - 1, 1);
            var w1 = d.getDay();
            if (w1 == 0) w1 = 7;
            // total day of month
            d.setFullYear(year, month, 0);
            var dd = d.getDate();
            // first Monday
            var d1;
            if (w1 != 1) d1 = 7 - w1 + 2;
            else d1 = 1;
            var week_count;
            week_count = Math.ceil((dd - d1 + 1) / 7);
            //document.write(year + "年" + month + "月有" + week_count +"周");
            var zhou_arr = [];
            for (var i = 0; i < week_count; i++) {
                var monday = d1 + i * 7;
                var sunday = monday + 6;
                var from = year + "-" + month + "-" + monday;
                var to;
                if (sunday <= dd) {
                    to = year + "-" + month + "-" + sunday;
                } else {
                    d.setFullYear(year, month - 1, sunday);
                    to = d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate();
                }
                zhou_arr.unshift(from + "|" + to);
                //document.write("第"+(i+1)+"周 从" + from + " 到 " + to + "");
            }
            return zhou_arr;
        }

        function YMDinfo(ymd) {
            var arr = new Array();
            var arr = ymd.split("|");

            return arr[0].split("-")[1] + "月" + arr[0].split("-")[2] + "日" + "-" + arr[1].split("-")[1] + "月" + arr[1].split("-")[2] + "日";
        }

        function formatDate(ns) {
            var d = new Date(ns);
            var month = d.getMonth() + 1;
            var date = d.getDate();
            if (month < 10) {
                month = '0' + month;
            }
            if (date < 10) {
                date = '0' + date;
            }
            var dformat = [d.getFullYear(), month, date].join('-')
            return dformat;
        }

    }])

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM