其它综合

JS-时间函数

我爱IT资讯库   2021/02/22

/**
* 日期范围工具类
*/
var daterangeutil = (function () {
    /***
    * 获得当前时间
    */
    this.getcurrentdate = function () {
        return new date();
    };

    /***
    * 获得本周起止时间
    */
    this. 

    /***
    * 获得本月的起止时间
    */
    this.getcurrentmonth = function () {
        //起止日期数组  
        var startstop = new array();
        //获取当前时间  
        var currentdate = this.getcurrentdate();
        //获得当前月份0-11  
        var currentmonth = currentdate.getmonth();
        //获得当前年份4位年  
        var currentyear = currentdate.getfullyear();
        //求出本月第一天  
        var firstday = new date(currentyear, currentmonth, 1);


        //当为12月的时候年份需要加1  
        //月份需要更新为0 也就是下一年的第一个月  
        if (currentmonth == 11) {
            currentyear++;
            currentmonth = 0; //就为  
        } else {
            //否则只是月份增加,以便求的下一月的第一天  
            currentmonth++;
        }


        //一天的毫秒数  
        var millisecond = 1000 * 60 * 60 * 24;
        //下月的第一天  
        var nextmonthdayone = new date(currentyear, currentmonth, 1);
        //求出上月的最后一天  
        var lastday = new date(nextmonthdayone.gettime() - millisecond);

        //添加至数组中返回  
        startstop.push(firstday);
        startstop.push(lastday);
        //返回  
        return startstop;
    };

    /**
    * 得到本季度开始的月份
    * @param month 需要计算的月份
    ***/
    this.getquarterseasonstartmonth = function (month) {
        var quartermonthstart = 0;
        var spring = 0; //春  
        var summer = 3; //夏  
        var fall = 6;   //秋  
        var winter = 9; //冬  
        //月份从0-11  
        if (month lt; 3) {
            return spring;
        }

        if (month lt; 6) {
            return summer;
        }

        if (month lt; 9) {
            return fall;
        }

        return winter;
    };

    /**
    * 获得该月的天数
    * @param year年份
    * @param month月份
    * */
    this.getmonthdays = function (year, month) {
        //本月第一天 1-31  
        var relativedate = new date(year, month, 1);
        //获得当前月份0-11  
        var relativemonth = relativedate.getmonth();
        //获得当前年份4位年  
        var relativeyear = relativedate.getfullyear();

        //当为12月的时候年份需要加1  
        //月份需要更新为0 也就是下一年的第一个月  
        if (relativemonth == 11) {
            relativeyear++;
            relativemonth = 0;
        } else {
            //否则只是月份增加,以便求的下一月的第一天  
            relativemonth++;
        }
        //一天的毫秒数  
        var millisecond = 1000 * 60 * 60 * 24;
        //下月的第一天  
        var nextmonthdayone = new date(relativeyear, relativemonth, 1);
        //返回得到上月的最后一天,也就是本月总天数  
        return new date(nextmonthdayone.gettime() - millisecond).getdate();
    };

    /**
    * 获得本季度的起止日期
    */
    this.getcurrentseason = function () {
        //起止日期数组  
        var startstop = new array();
        //获取当前时间  
        var currentdate = this.getcurrentdate();
        //获得当前月份0-11  
        var currentmonth = currentdate.getmonth();
        //获得当前年份4位年  
        var currentyear = currentdate.getfullyear();
        //获得本季度开始月份  
        var quarterseasonstartmonth = this.getquarterseasonstartmonth(currentmonth);
        //获得本季度结束月份  
        var quarterseasonendmonth = quarterseasonstartmonth + 2;

        //获得本季度开始的日期  
        var quarterseasonstartdate = new date(currentyear, quarterseasonstartmonth, 1);
        //获得本季度结束的日期  
        var quarterseasonenddate = new date(currentyear, quarterseasonendmonth, this.getmonthdays(currentyear, quarterseasonendmonth));
        //加入数组返回  
        startstop.push(quarterseasonstartdate);
        startstop.push(quarterseasonenddate);
        //返回  
        return startstop;
    };

    /***
    * 得到本年的起止日期
    * 
    */
    this.getcurrentyear = function () {
        //起止日期数组  
        var startstop = new array();
        //获取当前时间  
        var currentdate = this.getcurrentdate();
        //获得当前年份4位年  
        var currentyear = currentdate.getfullyear();

        //本年第一天  
        var currentyearfirstdate = new date(currentyear, 0, 1);
        //本年最后一天  
        var currentyearlastdate = new date(currentyear, 11, 31);
        //添加至数组  
        startstop.push(currentyearfirstdate);
        startstop.push(currentyearlastdate);
        //返回  
        return startstop;
    };

    /**
    * 返回上一个月的第一天date类型
    * @param year 年
    * @param month 月
    **/
    this.getpriormonthfirstday = function (year, month) {
        //年份为0代表,是本年的第一月,所以不能减  
        if (month == 0) {
            month = 11; //月份为上年的最后月份  
            year--; //年份减1  
            return new date(year, month, 1);
        }
        //否则,只减去月份  
        month--;
        return new date(year, month, 1);;
    };

    /**
    * 获得上一月的起止日期
    * ***/
    this.getpreviousmonth = function () {
        //起止日期数组  
        var startstop = new array();
        //获取当前时间  
        var currentdate = this.getcurrentdate();
        //获得当前月份0-11  
        var currentmonth = currentdate.getmonth();
        //获得当前年份4位年  
        var currentyear = currentdate.getfullyear();
        //获得上一个月的第一天  
        var priormonthfirstday = this.getpriormonthfirstday(currentyear, currentmonth);
        //获得上一月的最后一天  
        var priormonthlastday = new date(priormonthfirstday.getfullyear(), priormonthfirstday.getmonth(), this.getmonthdays(priormonthfirstday.getfullyear(), priormonthfirstday.getmonth()));
        //添加至数组  
        startstop.push(priormonthfirstday);
        startstop.push(priormonthlastday);
        //返回  
        return startstop;
    };


    /**
    * 获得上一周的起止日期
    * **/
    this.getpreviousweek = function () {
        //起止日期数组  
        var startstop = new array();
        //获取当前时间  
        var currentdate = this.getcurrentdate();
        //返回date是一周中的某一天  
        var week = currentdate.getday();
        //返回date是一个月中的某一天  
        var month = currentdate.getdate();
        //一天的毫秒数  
        var millisecond = 1000 * 60 * 60 * 24;
        //减去的天数  
        var minusday = week != 0  week - 1 : 6;
        //获得当前周的第一天  
        var currentweekdayone = new date(currentdate.gettime() - (millisecond * minusday));
        //上周最后一天即本周开始的前一天  
        var priorweeklastday = new date(currentweekdayone.gettime() - millisecond);
        //上周的第一天  
        var priorweekfirstday = new date(priorweeklastday.gettime() - (millisecond * 6));

        //添加至数组  
        startstop.push(priorweekfirstday);
        startstop.push(priorweeklastday);

        return startstop;
    };

    /**
    * 得到上季度的起始日期
    * year 这个年应该是运算后得到的当前本季度的年份
    * month 这个应该是运算后得到的当前季度的开始月份
    * */
    this.getpriorseasonfirstday = function (year, month) {
        var quartermonthstart = 0;
        var spring = 0; //春  
        var summer = 3; //夏  
        var fall = 6;   //秋  
        var winter = 9; //冬  
        //月份从0-11  
        switch (month) {//季度的其实月份  
            case spring:
                //如果是第一季度则应该到去年的冬季  
                year--;
                month = winter;
                break;
            case summer:
                month = spring;
                break;
            case fall:
                month = summer;
                break;
            case winter:
                month = fall;
                break;

        };

        return new date(year, month, 1);
    };

    /**
    * 得到上季度的起止日期
    * **/
    this.getpreviousseason = function () {
        //起止日期数组  
        var startstop = new array();
        //获取当前时间  
        var currentdate = this.getcurrentdate();
        //获得当前月份0-11  
        var currentmonth = currentdate.getmonth();
        //获得当前年份4位年  
        var currentyear = currentdate.getfullyear();
        //上季度的第一天  
        var priorseasonfirstday = this.getpriorseasonfirstday(currentyear, currentmonth);
        //上季度的最后一天  
        var priorseasonlastday = new date(priorseasonfirstday.getfullyear(), priorseasonfirstday.getmonth() + 2, this.getmonthdays(priorseasonfirstday.getfullyear(), priorseasonfirstday.getmonth() + 2));
        //添加至数组  
        startstop.push(priorseasonfirstday);
        startstop.push(priorseasonlastday);
        return startstop;
    };

    /**
    * 得到去年的起止日期
    * **/
    this.getpreviousyear = function () {
        //起止日期数组  
        var startstop = new array();
        //获取当前时间  
        var currentdate = this.getcurrentdate();
        //获得当前年份4位年  
        var currentyear = currentdate.getfullyear();
        currentyear--;
        var prioryearfirstday = new date(currentyear, 0, 1);
        var prioryearlastday = new date(currentyear, 11, 1);
        //添加至数组  
        startstop.push(prioryearfirstday);
        startstop.push(prioryearlastday);
        return startstop;
    };

    return this;
})();

/*
 * 使用:
case "本月":
    $("#startdate").val(daterangeutil.getcurrentmonth()[0].format("yyyy-mm-dd"));
    $("#enddate").val(daterangeutil.getcurrentmonth()[1].format("yyyy-mm-dd"));
    break;
 * 
 */

lt;script type="text/javascript"gt;
function showdate(n)
{
var uom = new date(new date()-0+n*86400000);
uom = uom.getfullyear() + "-" + (uom.getmonth()+1) + "-" + uom.getdate();
return uom;
}
window.alert("今天是:"+showdate(0));
window.alert("昨天是:"+showdate(-1));
window.alert("明天是:"+showdate(1));
window.alert("10天前是:"+showdate(-10));
window.alert("5天后是:"+showdate(5));
lt;/scriptgt; 

原文:http://www.cnblogs.com/emanlee/archive/2009/04/05/1429666.html

js-时间函数

原文地址:http://www.cnblogs.com/love-zf/p/6219212.html




热门内容

“大数据”信息平台 覆盖社区5000老年人

“大数据”信息平台 覆盖社区5000老年人

突然头疼脑热,身边没人照顾;电灯坏了、水管漏了,该找谁来帮忙修?菊园新区智慧养老项目搭建了一个为老综合服务平台... ...

在PHP中全局变量的使用详解

即使开发一个新的大型PHP程序,你也不可避免的要使用到全局数据,因为有些数据是需要用到你的代码的不同部分的。一些常见的全... ...

名称空间也可以自定义

名字空间的定义 名字空间除了系统定义的名字空间之外,还可以自己定义,定义名字空间用关键字namespace,使用名字空 ...
从量价变化中洞察主力意图

从量价变化中洞察主力意图

成份B指(399003.SZ) <script language="JavaScript" typ... ...
android 继承view类刷新页面【安卓进化十一】

android 继承view类刷新页面【安卓进化十一】

       最近做项目中发现,继承了view类的子类... ...

C# XmlSerializer 对象的Xml序列化和反序列化

    .Net程序执行时,对象都驻留在内存中;内存中的对象如果需要传递给其他系统使用;或者在... ...

hdu-1286找新朋友(欧拉函数,水题)

题目链接: 找新朋友 time limit: 2000/1000 ms (java/others)memory limi ...

java程序 处理 andrid本地帮助文档打开慢的方式

    下载本地的android自带sdk帮助文档由于有被墙的google地址,可以通... ...

RTTI学习笔记

翻看C++的书,对RTTI的讲解都很困惑,"你知道你的对象是哪个类吗","RTTI常用于调试和数据库程序"对这些讲... ...

使用axis2传输附件

服务端Service文件: import java.io.FileOutputStream; import jav... ...

sql server 的行转列

sql server中行转列在sql2005之后,sqlserver引入了pivot运算符,也即是可以旋转行为列,... ...
【Node.js基础篇】(九)使用readline模块实现Node.js的输入输出

【Node.js基础篇】(九)使用readline模块实现Node.js的输入输出

学C++的时候,有cout和cin,Java也有println和Scanner控件,Node.js也有如同... ...
iOS 应用支持4寸屏

iOS 应用支持4寸屏

iPhone 5出了,一大批应用要兼容新的分辨率,下载了Xcode 4.5,在官方那里找不到有关兼容新分辨... ...

循环执行oracle到mysql的迁移步骤及各种注意事项

改章节笔者在北京逛街的时候突然想到的...今天就有想写几篇关于循环执行的笔记,所以回家到之后就奋笔疾书的写出来发表了 ... ...
2015收获的季节

2015收获的季节

—————————————————————前言————————————————————— ———————... ...

JSP中的pageEncoding和contentType属性

关于JSP页面中的pageEncoding和contentType两种属性的区别: pageEncoding是js... ...

对XX证券报关于物联网操作系统的几个问题的答复

XX证券报提问了几个关于物联网和物联网操作系统的问题,个人表达了一些粗陋的观点,在这里发表出来,与行业朋友交流和探... ...
In语句优化

In语句优化

In语句的优化 现有两张表: CLINIC_ORGANISM 数据量:1400 LAB_DRUGRESISTITE... ...
fuzzysearch, 在JavaScript中,快速而快速的模糊搜索

fuzzysearch, 在JavaScript中,快速而快速的模糊搜索

源代码名称:fuzzysearch源代码网址:http://www.github.com/bevacqua/fuzzys ...

SQL Server里的 ISNULL 与 NULLIF

SQL Server 中有两个参数,语法:     ISNULL(check_... ...

判断SD是否存在及其容量查询

这个非常简单,直接上代码: MainActivity: package com.home.getsdinf... ...

Python:如何排序(sort)

一、前言 python的列表(list)有两个排序方法: 一种是内建的list.sort()方法,可以直接改变列表的内容 ...

boost库在工作(5)作用域智能指针scoped_ptr之四

第二种情况,主要就是使用在调用异常抛出的函数的地方。如下面的例子: //异常抛出的函数,适合使用智能指针... ...

Error:couldnotopen`C:\ProgramFiles\Java\jre6\lib\i386\jvm.cfg'

昨天刚过情人节!哈哈,好久没记录学习内容了,今天在房子闲着没事重新安装jdk,按道理很简单的; 第一步下载jdk; ...

第49周二

晚上总结下今天,主要是在完善用户需求文档,同时看了jquery相关的操作技巧,主要是想学习jquery源码,在知乎jqu ...

C++ #include 和 using std::string

今天,偶尔写了一个小小的程序,关于字符串问题程序。 比如,我想连续打印用户输入的字符串。 #include&l... ...

Struts Hibernate Spring 经典面试题

Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建Ses... ...

SAP Performance浅析

本文来源于:http://scnblogs.techweb.com.cn/tcsapbw/archives/106... ...

数据库MySQL与xls文件的互导

      最近的一个项目需要将xls表导入到MySQL数据库中和将MySQL数据表导出到... ...

Head-of-Line Blocking (线头阻塞)

Head of Line (HOL) Blocking 产生的原因: 概念:队列的首个packet由于它的目的... ...