JavaScript实现日期加减计算功能代码实例,因为在js中没有类似C#中的AddDays方法,所以要想实现日期加减的话,就需要自己写函数来实现。这里分享给大家,有需要的小伙伴可以参考下
项目中需要用到,自己写了一个。javascript日期按月加减
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta charset="utf-8">
- <title></title>
- <script>
- function dateToDate(date) {
- var sDate = new Date();
- if (typeof date == 'object'
- && typeof new Date().getMonth == "function"
- ) {
- sDate = date;
- }
- else if (typeof date == "string") {
- var arr = date.split('-')
- if (arr.length == 3) {
- sDate = new Date(arr[0] + '-' + arr[1] + '-' + arr[2]);
- }
- }
- return sDate;
- }
- function addMonth(date, num) {
- num = parseInt(num);
- var sDate = dateToDate(date);
- var sYear = sDate.getFullYear();
- var sMonth = sDate.getMonth() + 1;
- var sDay = sDate.getDate();
- var eYear = sYear;
- var eMonth = sMonth + num;
- var eDay = sDay;
- while (eMonth > 12) {
- eYear++;
- eMonth -= 12;
- }
- var eDate = new Date(eYear, eMonth - 1, eDay);
- while (eDate.getMonth() != eMonth - 1) {
- eDay--;
- eDate = new Date(eYear, eMonth - 1, eDay);
- }
- return eDate;
- }
- function calcDate() {
- var d = document.getElementById('date').value;
- var n = document.getElementById('num').value;
- var eDate = addMonth(d, n);
- document.getElementById('result').innerHTML = eDate.getFullYear() + '-' + (eDate.getMonth() + 1) + '-' + eDate.getDate();
- }
- </script>
- </head>
- <body>
- <input type="date" id="date" />
- <input type="number" id="num" value="1" />
- <input type="button" value="计算" onclick="calcDate()" />
- <div id="result"></div>
- </body>
- </html>
方法二:
- <script language="javascript">
- Date.prototype.Format = function(fmt)
- {
- //代码作者: meizz
- var o =
- {
- "M+" : this.getMonth() + 1, //月份
- "d+" : this.getDate(), //日
- "h+" : this.getHours(), //小时
- "m+" : this.getMinutes(), //分
- "s+" : this.getSeconds(), //秒
- "q+" : Math.floor((this.getMonth() + 3) / 3), //季度
- "S" : this.getMilliseconds() //毫秒
- };
- if (/(y+)/.test(fmt))
- fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
- for (var k in o)
- if (new RegExp("(" + k + ")").test(fmt))
- fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
- return fmt;
- }
- Date.prototype.addDays = function(d)
- {
- this.setDate(this.getDate() + d);
- };
- Date.prototype.addWeeks = function(w)
- {
- this.addDays(w * 7);
- };
- Date.prototype.addMonths= function(m)
- {
- var d = this.getDate();
- this.setMonth(this.getMonth() + m);
- if (this.getDate() < d)
- this.setDate(0);
- };
- Date.prototype.addYears = function(y)
- {
- var m = this.getMonth();
- this.setFullYear(this.getFullYear() + y);
- if (m < this.getMonth())
- {
- this.setDate(0);
- }
- };
- </script>
方法三:
- <script>
- function DateAdd(interval,number,date)
- {
- /*
- *--------------- DateAdd(interval,number,date) -----------------
- * DateAdd(interval,number,date)
- * 功能:实现VBScript的DateAdd功能.
- * 参数:interval,字符串表达式,表示要添加的时间间隔.
- * 参数:number,数值表达式,表示要添加的时间间隔的个数.
- * 参数:date,时间对象.
- * 返回:新的时间对象.
- * var now = new Date();
- * var newDate = DateAdd( "d ",5,now);
- * author:wanghr100(灰豆宝宝.net)
- * update:2004-5-28 11:46
- *--------------- DateAdd(interval,number,date) -----------------
- */
- switch(interval)
- {
- case "y " : {
- date.setFullYear(date.getFullYear()+number);
- return date;
- break;
- }
- case "q " : {
- date.setMonth(date.getMonth()+number*3);
- return date;
- break;
- }
- case "m " : {
- date.setMonth(date.getMonth()+number);
- return date;
- break;
- }
- case "w " : {
- date.setDate(date.getDate()+number*7);
- return date;
- break;
- }
- case "d " : {
- date.setDate(date.getDate()+number);
- return date;
- break;
- }
- case "h " : {
- date.setHours(date.getHours()+number);
- return date;
- break;
- }
- case "m " : {
- date.setMinutes(date.getMinutes()+number);
- return date;
- break;
- }
- case "s " : {
- date.setSeconds(date.getSeconds()+number);
- return date;
- break;
- }
- default : {
- date.setDate(d.getDate()+number);
- return date;
- break;
- }
- }
- }
- var now = new Date();
- //加五天.
- var newDate = DateAdd( "d ",5,now);
- alert(newDate.toLocaleDateString())
- //加两个月.
- newDate = DateAdd( "m ",2,now);
- alert(newDate.toLocaleDateString())
- //加一年
- newDate = DateAdd( "y ",1,now);
- alert(newDate.toLocaleDateString())
- </script>
以上所述就是本文的全部内容了,希望大家能够喜欢。
新闻热点
疑难解答
图片精选