/**
*  DK 命名空间  防止全局变量污染
*/
var DK = {} ;
/**
* 获取前几个月,默认为一个月,当前时间
* @author duke
* @date 格式为yyyy-mm-dd的日期,如:2014-01-25
*/
DK.getPreMonth = function() {
var obj = DK.init(arguments);
var dtObj = DK.sptDtStr(obj.dtStr);
//如果大于12个月,先算年
if (obj.num >= 12) {
dtObj.year -= parseInt(obj.num / 12);
}
//年计算结束后,计算月,月如果是负数,年减1,月加12.
dtObj.month -= obj.num % 12;
if (dtObj.month <= 0) {
dtObj.year--;
dtObj.month += 12;
}
//获取该月组后一天,也就是天数。
var lastDay = new Date(dtObj.year, dtObj.month, 0).getDate();
if (dtObj.day > lastDay) {
dtObj.day = lastDay;
}
return dtObj.year + '-' + dtObj.month + '-' + dtObj.day;
}
/**
* 获取前几天,默认为一天,当前时间
*/
DK.getPreDay = function() {
var obj = DK.init(arguments);
var dtObj = DK.sptDtStr(obj.dtStr);
var dtTime = new Date(dtObj.year, dtObj.month - 1, dtObj.day).getTime();
return DK.dtToStr(new Date(dtTime - obj.num * 86400000));
}
/**
* 获取前几周,默认为一周,当前时间num,date
*/
DK.getPreWeek = function() {
var obj = DK.init(arguments);
return DK.getPreDay(7 * obj.num, obj.dtStr);
}
/**
* 日期类型转换为字符串类型,默认当前日期
*/
DK.dtToStr = function(date) {
date = date || new Date();
return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();
}
/**
* 格式化日期字符串
*/
DK.formatdtStr = function(date) {
var dtObj = DK.sptDtStr(date);
//日月补0
if (dtObj.month < 10) {
dtObj.month = '0' + dtObj.month;
}
if (dtObj.day < 10) {
dtObj.day = '0' + dtObj.day;
}
return dtObj.year + '-' + dtObj.month + '-' + dtObj.day;
}
/**
* 初始化参数
*/
DK.init = function(arguments) {
//数量和日期字符串
var obj = {
num:1,
dtStr:(function(){
return DK.dtToStr();
})()
}
if (arguments.length === 1) {
var arg = arguments[0];
if (arg instanceof Date) {
obj.dtStr = DK.dtToStr(arg);
} else if(typeof arg == 'string') {
obj.dtStr = arg;
} else if(typeof arg == 'number') {
obj.num = arg;
} else {
throw new Error('arg type error');
}
} else if(arguments.length === 2) {
var arg1 = arguments[0], arg2 = arguments[1];
if ((arg1 instanceof Date || typeof arg1 == 'string') && typeof arg2 == 'number') {
if(typeof arg1 == 'string'){
obj.dtStr = arg1;
}else{
obj.dtStr = DK.dtToStr(arg1);
}
obj.num = arg2;
} else if((arg2 instanceof Date || typeof arg2 == 'string') && typeof arg1 == 'number') {
if (typeof arg2 == 'string') {
obj.dtStr = arg2;
} else {
obj.dtStr = DK.dtToStr(arg2);
}
obj.num = arg1;
} else {
throw new Error('arguments type error');
}
} else if(arguments.length > 2) {
throw new Error('too many arguments');
}
return obj;
}
/**
* 分割日期字符串
*/
DK.sptDtStr = function(dtStr) {
var dtObj = {};//日期对象
var dtArr = dtStr.split('-');
dtObj.year = parseInt(dtArr[0]); //获取当前日期的年份
dtObj.month = parseInt(dtArr[1]); //获取当前日期的月份
dtObj.day = parseInt(dtArr[2]); //获取当前日期的日
return dtObj;
}

//该js文件主要是现了,无论是几个参数(两个以内),无论是参数顺序,都可以获取以前的时间。

//主要是在默认值方面做了大量的改进,虽说存在许多的不必要,但是做基础框架不就是多做一点事情吗

//当然这里面肯定还有许多不足,大家一起交流。

转载于:https://www.cnblogs.com/shalf/p/5118325.html

js获取几个月前,几周前时间。相关推荐

  1. JS获取当前前一个月的日期,前两个月的日期

    起因 今天收到需求要实现一个获取当前时间前一个月的日期,前两个月,前三个月,前一年,前两年日期时间的需求于是我就去网上找了个帖子,按照他给的方法小改一下,废话不多说直接上代码[注意目前不支持往后的时间 ...

  2. js 获取某个时间的一天前 几天前 一周前 几周前 一个月前 一年前的时间

    js 获取某个时间的一天前 几天前 一周前 几周前 一个月前 一年前的时间 1.一天前 var dateStr = new Date(); dateStr.setDate(dateStr.getDat ...

  3. JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天、某周的区间范围

    本文原创,转载请注明出处,如果发现写的有问题欢迎指正 **目录 ** 文章目录 JS源码 获取某年某月的有多少周 获取今天是今年的第几周 获取今天是今年的第几天 获取今天是本月第几周 获取周的区间 方 ...

  4. js 获取当前日期(年月日时分秒周)

    js 获取当前日期(年月日时分秒周) var myDate = new Date(); var myYear = myDate.getFullYear(); // 获取当前年份 var myMonth ...

  5. js获取上一个月、下一个月

    /*** 获取上一个月** @date 格式为yyyy-mm-dd的日期,如:2014-01-25*/function getPreMonth(date) {var arr = date.split( ...

  6. JS获取当天零点或23:59:59的时间

    JS获取当天(或某一条)零点的方法还是比较多,但是很多方法并不能支持所有设备(或系统),这里我以获取当天零点为例. // 方法一: let mytime = new Date(new Date(new ...

  7. php 上一个月的开始和结束,php获取上一个月的开始与结束时间遇到的问题

    改正之前: $_lastMonthStart = date('Y-m-1 00:00:00', strtotime("-1 month")); $_lastMonthEnd = d ...

  8. js: 获取最近3天、1周、1个月、3个月、半年、1年的时间

    moment.js // 近3天 this.getRecentDay(3); //近一周 this.getRecentDay(7); // 近一个月 this.getRecentMonth(1); / ...

  9. js 获取今天以及前一周/前20天时间

    var end = new Date(); var start = new Date(); console.log('==========今天=============') console.log(s ...

最新文章

  1. 1、win10下连接本地系统上的Linux操作系统(分别以Nat方式和桥接模式实现)
  2. python接口测试-项目实践(二)获取接口响应,取值(re、json)
  3. angularjs探秘五 举足轻重的scope
  4. 三年经验前端社招——慧择网
  5. 【线段树】Serious Business(CF1648D)
  6. linux下安装Mysql(干货!!!)解决mysql 1130问题,远程登录问题
  7. 设计模式C++实现(6)——适配器模式
  8. 工作中用到的安卓日志相关命令(logcat)
  9. php 父类命名空间,对命名空间的理解、类的继承与实现——2019年7月31号22时03分...
  10. 使用maven根据JSON文件自动生成Java POJO类(Java Bean)源文件
  11. oracle的db的容量计算公式,Oracle如何精确计算row的大小
  12. redis安装及运行
  13. 手机html在哪个文件里,手机录像在哪个文件夹
  14. Redux or Mobx --前端应用状态管理方案的探索与思考
  15. [初学Python]利用某网站的功能写一个磁力链转种子工具
  16. 64位 regsrv win10_64位WINDOWS 10系统下安装Eplan 2.8及注册过程
  17. 【贺图】子兮祝您2015年新春快乐!
  18. python3.6+PyQt5安装
  19. php编程好学不,PHP编程一般学哪些内容 PHP编程好学吗
  20. 一起来读源码41-eosio.cdt privileged

热门文章

  1. BootStrap笔记-信息提示框的使用
  2. Spring Cloud笔记-eureka及openfeign基本使用
  3. C/C++|Qt工作笔记-4种方法判断当前对象(类)名或标识(继承发,typeid法,元对象className()法,Q_CLASSINFO法)
  4. Qt工作笔记-获取选中的文件名(lastIndexOf的使用)
  5. Qt creator5.7 OpenCV249之图片膨化(含源码下载)
  6. 计算机等级考试java题型_计算机等级考试报考建议
  7. 里面怎么打中文字_“标题党”英语应该怎么翻译?不要翻译成“title party”!...
  8. linux 查看led设备,Linux下LedButton设备驱动——详细设计
  9. ue4显示变量_UE4:快速入门蓝图(Blueprint)的方法之一
  10. 学python适合什么年龄段的人用_7个现在就该学习Python 的理由【80%的人都不知道】...