/**
 *  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文件主要是现了,无论是几个参数(两个以内),无论是参数顺序,都可以获取以前的时间。

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

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

js获取几个月前,几周前时间。的更多相关文章

  1. js获取上一个月、下一个月格式为yyyy-mm-dd的日期

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

  2. JS 获取当天所在月的第一天的日期,最后一天日期,所在周的每天的日期,时间,所在每月日期,时间的计算

    /** * 获取当天所在月的最后一天日期,和下一个月的第一天日期 * 调用getMonthDay(d), d默认值为01,d为要设置成的day: */ const getMonthMaxDay = ( ...

  3. 用javascript写一个显示时间差 几分钟前 几小时前 几天前 几周前 大于一个月显示日期

    window.onload = function(){ var show_times = $(".times span"); for(var i=0;i<show_times ...

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

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

  5. JS获取当前年份月

    //获取完整的日期 var date=new Date; var year=date.getFullYear();  var month=date.getMonth()+1; month =(mont ...

  6. js获取某年某月一共多少天

    const getDaysInMonth = (year, month) => { let date = new Date(year, month, 1); return new Date(da ...

  7. [python实用代码片段]python获取当前时间的前一天,前一周,前一个月

    python获取当前时间的前一天,前一周,前一个月. 实用python的datetime.timedelta方法,避免了有的月份是30和31等不同的情况. 获取前一个月的时间,方法实现:首先datet ...

  8. 用js获取周、月第一天和最后一天(转载)

    var getCurrentWeek = function (day) { var days = ["周日", "周一", "周二", &q ...

  9. Oracle获取一周前,一个月前,一年前, 本周,本月,当年的日期

    1.获取当前时间一周前的日期 ' day from dual 类似的 --当前时间减去7分钟的时间 ' MINUTE from dual --当前时间减去7小时的时间 ' hour from dual ...

随机推荐

  1. yii 缓存探究

    1.在配置文件中 //在权威指南上是'cache' 其实可以根据不同的缓存组件起不同的名称 //memcache缓存 'memcache' => array( 'class' => 'sy ...

  2. Python中的redis学习笔记

    redis是一个key-value结构的数据库,value的格式可以使string,set,list,map(即python里面的dict),sorted set(有序集合) 1.初始化 1)直接连接 ...

  3. sql server2005主从数据库同步配置

    网站规模到了一定程度之后,该分的也分了,该优化的也做了优化,但是还是不能满足业务上对性能的要求:这时候我们可以考虑使用主从库.主从库是两台服务器上的两个数据库,主库以最快的速度做增删改操作+最新数据的 ...

  4. CoreGraphics --- CGContext

    CGContext又叫图形上下文,相当于一块画布,以堆栈形式存放,只有在当前context上绘图才有效.iOS有分多种图形上下文,其中UIView自带提供的在drawRect:方法中通过UIGraph ...

  5. Spring 3整合Quartz 2实现定时任务一:常规整合 (基于maven构建)

    最近工作中需要用到定时任务的功能,虽然Spring3也自带了一个轻量级的定时任务实现,但感觉不够灵活,功能也不够强大.在考虑之后,决定整合更为专业的Quartz来实现定时任务功能. 首先,当然是添加依 ...

  6. form表单提交的方法

    最近研究了下html中,form保单提交的几种方法,现与大家分享一下(注:网上可能已经有好多版本了,这里自己写下来做个总结了,哈!): 方法一:利用form的onsubmit()函数(经常使用) &l ...

  7. 使用 Cloud Insight SDK 监控北京空气质量!

    现在越来越多的 App 都开始有广告了.特别是空气质量监测,和天气类的 App,广告还是蛮多的,眼花缭乱,真是够了. 最近刚好在用一款系统监控工具 Cloud Insight,它提供的 SDK 可以把 ...

  8. 合并 ios 静态库

    合并 cordovaLib库: lipo -create 'Release-iphoneos/libCordova.a' "Release-iphonesimulator/libCordov ...

  9. VirtualBox设置共享文件夹和镜像访问的方法

    VirtualBox设置共享文件夹和镜像访问的方法 virtualBox是一款虚拟机软件,可以在该软件上安装各类的操作系统,至于如何安装请参见另外一篇经验<如何使用VirtualBox安装win ...

  10. c#4.0新特性之协变与逆变

    1.C#3.0以前的协变与逆变 如果你是第一次听说这个两个词,别担心,他们其实很常见.C#4.0中的协变与逆变[1](Covariance and contravariance)有了进一步的完善,主要 ...