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

.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;
} }])

  

angular--获取时间方法services的更多相关文章

  1. angular获取时间

    获取24小时制的时间<h1> {{time}} </h1> <script> angular.module('app', []) .controller('ctrl ...

  2. C# DateTime 获取时间方法,网上收集

    DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays( - Convert.ToInt32(dt.DayOfWeek.T ...

  3. python代码中指定时区获取时间方法

    os.environ['TZ'] = 'Asia/Shanghai' os.environ['TZ'] = 'Europe/London' hour_cur = time.strftime('%H')

  4. Android获取系统时间方法的总结

    Android获取系统时间方法的方法有很多种,常用的有Calendar.Date.currentTimeMills等方法. (1)Calendar Calendar获取系统时间首先要用Calendar ...

  5. Java 获取当前系统时间方法比较

    转载: http://blog.csdn.net/zzjjiandan/article/details/8372617 一. 获取当前系统时间和日期并格式化输出: import java.util.D ...

  6. Java获取各种常用时间方法大全

    Java获取各种常用时间方法大全 package cc.javaweb.test; Java中文网,Java获取各种时间大全 import java.text.DateFormat; import j ...

  7. 【转载】c/c++在windows下获取时间和计算时间差的几种方法总结

    一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t time ...

  8. js(jQuery)获取时间的方法及常用时间类搜集

    获取时间的方法及常用时间类都是大家经常使用的,在本文为大家整理了一些,个人感觉还比较全,感兴趣的朋友可以收集下   复制代码代码如下: $(function(){ var mydate = new D ...

  9. PHP获取时间日期的多种方法

    分享下PHP获取时间日期的多种方法. <?php echo "今天:".date("Y-m-d")."<br>";     ...

  10. LoadRunner中获取当前系统时间方法

    LoadRunner中获取当前系统时间方法 发表于:2017-6-02 11:41  作者:人生_0809   来源:51Testing软件测试网采编 字体:大 中 小 | 上一篇 | 下一篇 | 打 ...

随机推荐

  1. 【算法】解析IEEE 754 标准

    目录结构: contents structure [-] 浮点数的存储过程 次正规数(Denormalized Number) 零(zero) 非数值(NaN) 无穷大(infinity) 除数为0. ...

  2. SQL DCL 数据控制语句

    前言 DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句.这些语句定义了数据库.表.字段.用户的访问权限和安全级别.主要的语句关键字包 ...

  3. 设计模式? GoF

    GoF  >>> Gang of Four.四人帮 是Design Patterns: Elements of Reusable Object-Oriented Software ( ...

  4. 阿里云oss缩略图如何产生读取 超简单 不看后悔(转)

    OSS是使用通过URL尾部的参数指定图片的缩放大小 图片路径后面拼接如下路径: ?x-oss-process=image/[处理类型],x_100,y_50[宽高等参数] ?x-oss-process ...

  5. VMVare 虚拟机使用桥接模式

    VMVare 虚拟机使用桥接模式,和物理机使用同一个物理网卡,和物理主机使用同一个段的ip. 1.VMware 编辑  > 虚拟网络编辑器 2.更改配置 3.编辑名称为VMnet0 的网络(如果 ...

  6. 利用cwRsync客户端将Windows下文件同步到Linux

    这里不描述Linux服务端安装配置rsync服务的过程,有需要可以在网络上查找相关教程. 1.安装cwRsync客户端下载地址:http://itefix.no/cwrsync/下载文件cwRsync ...

  7. Android Api 27 在 Android 8.0 上出现 Only fullscreen opaque activities can request orientation 的解决情况

    刚上班,没有业务开发,对 App 的 Api 由 26 升级到了 27, 结果在 Android 8.0 的设备上会出现 crash . Log 如下: java java.lang.IllegalS ...

  8. macOS 下 PHPStorm + Xdebug 调试 Docker 环境中的代码

    0x00 描述 宿主机是 mac mini,构建的项目在 docker 中,所以需要在 PHPStorm 上配置 Xdebug 进行远程代码调试. 0x01 环境 宿主机:macOS High Sie ...

  9. 【OpenFOAM案例】02 自己动手

    前言:很多人说OpenFOAM很难,要啃上很多的理论书籍,什么流体力学.计算流体力学.矩阵理论.线性代数.数值计算.C++程序设计神马的,看看光这一堆书就能吓倒绝大多数的人.其实我们并不一定要从这些基 ...

  10. moving-files-from-one-linux-server-to-another-using-scp

    https://www.tecmint.com/scp-commands-examples/ https://haydenjames.io/linux-securely-copy-files-usin ...