我怎样才能把所有的日子都排成一行
How can i make a calendar with all days in one row
How can i make a calendar with all days in one row
我已经搜索了很多这个答案,但我仍然没有找到一个合适的答案或解决这个问题的方法....
我相信很多人都这样做过,但是有人仍然没有解释他们是如何做到的,这真的很奇怪。
有没有人知道答案,请用 javaScript 或 TypeScript 来做!
How can i make a calendar with all days in one row
我们在 JQuery 图书馆或其他一些资源中看到的大部分 table 它们都是 7 days in 1 row table
我想在 1 行中看到 30 天而不是日历中的 7 天!
例子---
简单而缓慢的方式:
var
startDate = new Date( 2015, 0, 1 )
, numOfDays = 30
, days = []
;
function addDay( date ) {
date.setDate( date.getDate() + 1 );
}
while ( numOfDays-- ) {
days.push( startDate.getDate() + '/' + ( startDate.getMonth() + 1 )
+ '/' + startDate.getFullYear() );
addDay( startDate );
}
console.log( days.join() );
控制台结果:
1/1/2015,2/1/2015,3/1/2015,4/1/2015,5/1/2015,6/1/2015,7/1/2015,8/1/2015,9/1/2015,10/1/2015,11/1/2015,12/1/2015,13/1/2015,14/1/2015,15/1/2015,16/1/2015,17/1/2015,18/1/2015,19/1/2015,20/1/2015,21/1/2015,22/1/2015,23/1/2015,24/1/2015,25/1/2015,26/1/2015,27/1/2015,28/1/2015,29/1/2015,30/1/2015
我使用计数器进行了 30 次迭代。您可以将条件更改为一个月内的几天。
但我更喜欢使用儒略日,因为它比上面的方法更快。
好的,事实是您只需要一个具有特定格式的数组。让我们看看如何生成这个数组。
首先请允许我介绍一个库:Moment.js,将用于说明。也可以用纯JavaScript代替
var moment = require('moment');
var resultArray = [];
var util = {};
/**
* input:
* month [Number]
* output:
* totalDays [String]
*/
util.getDaysOfMonth = function(month){
month = +month;
var totalDays = '31';
if( /[469]|(11)/.test(month) ){
totalDays = '30';
} else if (month === 2) {
totalDays = moment().isLeapYear() ? '29' : '28';
}
return totalDays;
}
// Get current month of the year
var month = moment().get('month') + 1;
// current year
var year = moment().get('year');
var days = util.getDaysOfMonth(month);
for(var i = 1; i <= days; i++) {
var str = month + '/' + i + '/' + year;
resultArray.push(str);
}
现在你可以用这个数组做格式化了。
How can i make a calendar with all days in one row
我已经搜索了很多这个答案,但我仍然没有找到一个合适的答案或解决这个问题的方法....
我相信很多人都这样做过,但是有人仍然没有解释他们是如何做到的,这真的很奇怪。
有没有人知道答案,请用 javaScript 或 TypeScript 来做!
How can i make a calendar with all days in one row
我们在 JQuery 图书馆或其他一些资源中看到的大部分 table 它们都是 7 days in 1 row table
我想在 1 行中看到 30 天而不是日历中的 7 天!
例子---
简单而缓慢的方式:
var
startDate = new Date( 2015, 0, 1 )
, numOfDays = 30
, days = []
;
function addDay( date ) {
date.setDate( date.getDate() + 1 );
}
while ( numOfDays-- ) {
days.push( startDate.getDate() + '/' + ( startDate.getMonth() + 1 )
+ '/' + startDate.getFullYear() );
addDay( startDate );
}
console.log( days.join() );
控制台结果:
1/1/2015,2/1/2015,3/1/2015,4/1/2015,5/1/2015,6/1/2015,7/1/2015,8/1/2015,9/1/2015,10/1/2015,11/1/2015,12/1/2015,13/1/2015,14/1/2015,15/1/2015,16/1/2015,17/1/2015,18/1/2015,19/1/2015,20/1/2015,21/1/2015,22/1/2015,23/1/2015,24/1/2015,25/1/2015,26/1/2015,27/1/2015,28/1/2015,29/1/2015,30/1/2015
我使用计数器进行了 30 次迭代。您可以将条件更改为一个月内的几天。 但我更喜欢使用儒略日,因为它比上面的方法更快。
好的,事实是您只需要一个具有特定格式的数组。让我们看看如何生成这个数组。
首先请允许我介绍一个库:Moment.js,将用于说明。也可以用纯JavaScript代替
var moment = require('moment');
var resultArray = [];
var util = {};
/**
* input:
* month [Number]
* output:
* totalDays [String]
*/
util.getDaysOfMonth = function(month){
month = +month;
var totalDays = '31';
if( /[469]|(11)/.test(month) ){
totalDays = '30';
} else if (month === 2) {
totalDays = moment().isLeapYear() ? '29' : '28';
}
return totalDays;
}
// Get current month of the year
var month = moment().get('month') + 1;
// current year
var year = moment().get('year');
var days = util.getDaysOfMonth(month);
for(var i = 1; i <= days; i++) {
var str = month + '/' + i + '/' + year;
resultArray.push(str);
}
现在你可以用这个数组做格式化了。