JS时间方面比较有趣的问题。

不会武功的猪 发布于 2013/11/27 13:44
阅读 258
收藏 2

我想做一个日期选择的input只要年月日。想用JS生成后插入到页面里供用户选择。

取到当天日期。然后从当天开始,输入出后面30天的日期。

最后放到一个数组里供我可以使用

如这样的 var selectdata=['2013-11-27','2013-11-28','2013-11-29','2013-11-30','2013-12-01','2013-12-02',。。。。]

可以先不考虑润年问题。

哪个帮写个函数用用。

<select name="ymd" >
                        <option value="2013-11-27">2013年11月27日</option>
                        <option value="2013-11-28">2013年11月28日</option>
                        <option value="2013-11-29">2013年11月29日</option>
                        <option value="2013-11-30">2013年11月30日</option>
                        <option value="2013-12-01">2013年12月01日</option>
                        <option value="2013-12-02">2013年12月02日</option>
                        <option value="2013-12-03">2013年12月03日</option>
                        <option value="2013-12-04">2013年12月04日</option>
                        <option value="2013-12-05">2013年12月05日</option>
                        <option value="2013-12-06">2013年12月06日</option>
                    </select>




加载中
0
Jackin
Jackin
;(function(){
	var d = new Date(), selectdata=[], t = d.getTime();
	for(var i=0; i<30; i++){
		d.setTime(t + i * 86400000);
		selectdata.push([d.getFullYear(), d.getMonth() +1 , d.getDate()].join('-'));
	}
})();



头号大宝贝
头号大宝贝
怒赞!!
不会武功的猪
不会武功的猪
大师基本功扎实!!!!!!!!!!
1
彭博
彭博
var getDays = function(str,day_count,format){
	if(typeof str === "number"){
		format = day_count;
		day_count = str;
		str = new Date();
	}
	var date = new Date(str);
	var dates = [];
	for(var i=0;i<=day_count;i++){
		var d = null;
		if(format){
			var fmt = format;
			fmt = fmt.replace(/y{4}/,date.getFullYear());
			fmt = fmt.replace(/M{2}/,date.getMonth());
			fmt = fmt.replace(/d{2}/,date.getDate());
			d = fmt;
		}else{
			d = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate();
		}
		dates.push(d);
		date.setDate(date.getDate()+1);
	}
	return dates;
};
指定具体某天开始(包括该天):

getDays("2013-11-27",10);

从当天开始(包括当天)

getDays(10);

结果:

["2013-10-27", "2013-10-28", "2013-10-29", "2013-10-30", "2013-11-1", "2013-11-2", "2013-11-3", "2013-11-4", "2013-11-5", "2013-11-6", "2013-11-7"]

//格式化输出指定某天开始:

getDays("2013-11-27",10,"yyyy年MM月dd日");

格式化输出从当天开始:

getDays(10,"yyyy年MM月dd日");

结果:
["2013年10月27日", "2013年10月28日", "2013年10月29日", "2013年10月30日", "2013年11月1日", "2013年11月2日", "2013年11月3日", "2013年11月4日", "2013年11月5日", "2013年11月6日", "2013年11月7日"]

不会武功的猪
不会武功的猪
这个也不错!!!相当好~~哈哈。谢谢高人呀
彭博
彭博
源码:http://runjs.cn/code/mmnz7rks
0
不会武功的猪
不会武功的猪
求大师指点。。
0
彭博
彭博
擦 以为是我在哪粘贴拷贝的? 不给最佳答案 真伤心..
0
不会武功的猪
不会武功的猪

引用来自“彭博”的答案

var getDays = function(str,day_count,format){
	if(typeof str === "number"){
		format = day_count;
		day_count = str;
		str = new Date();
	}
	var date = new Date(str);
	var dates = [];
	for(var i=0;i<=day_count;i++){
		var d = null;
		if(format){
			var fmt = format;
			fmt = fmt.replace(/y{4}/,date.getFullYear());
			fmt = fmt.replace(/M{2}/,date.getMonth());
			fmt = fmt.replace(/d{2}/,date.getDate());
			d = fmt;
		}else{
			d = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate();
		}
		dates.push(d);
		date.setDate(date.getDate()+1);
	}
	return dates;
};
指定具体某天开始(包括该天):

getDays("2013-11-27",10);

从当天开始(包括当天)

getDays(10);

结果:

["2013-10-27", "2013-10-28", "2013-10-29", "2013-10-30", "2013-11-1", "2013-11-2", "2013-11-3", "2013-11-4", "2013-11-5", "2013-11-6", "2013-11-7"]

//格式化输出指定某天开始:

getDays("2013-11-27",10,"yyyy年MM月dd日");

格式化输出从当天开始:

getDays(10,"yyyy年MM月dd日");

结果:
["2013年10月27日", "2013年10月28日", "2013年10月29日", "2013年10月30日", "2013年11月1日", "2013年11月2日", "2013年11月3日", "2013年11月4日", "2013年11月5日", "2013年11月6日", "2013年11月7日"]

谢谢~~~
返回顶部
顶部