開発ログ:json形式で日付データを生成します

プロジェクトでは、使用するプラグインmPicker.jsの制限のため、日付jsonを生成するコードを記述し、ここに記録しました。

生成される形式は次のとおりです。子には12か月あり、子の下には対応する日があります。
json形式

このコードは、最初の49年間、次の50年間、および現在の年の合計100年間の日付を生成できます。

function getDateJson() {
    
    
	var _prevY = [],
    	_nextY = [],
    	_allY = [],
    	_allM = [],
    	_allD = [];
	var def = new Date(),
    	year = def.getFullYear(),
        month = def.getMonth() + 1,
        day = def.getDate();
	for (var i = 1; i <= 31; i++) {
    
     // 日
		_allD.push({
    
     "name": (i < 10 ? ('0' + i) : i) + '日', "value": (i < 10 ? ('0' + i) : i) })
	}
	for (var i = 1; i <= 12; i++) {
    
     // 月
		var _monthD = Object.assign([], _allD);
		switch(i) {
    
    
    		case 4, 6, 9, 11:
	    		_monthD.splice(_monthD.length, 1);
    			break;
    		default:
    			break;
		}
		_allM.push({
    
     "name": (i < 10 ? ('0' + i) : i) + '月', "value": (i < 10 ? ('0' + i) : i), child: _monthD });
	}
	for (var i = 49; i >= 0; i--) {
    
    
		var _upY = year + i + 1;
		var _downY = year - i;
		var _yearD = Object.assign([], _allM);

		// 后50年
		if((_downY%4==0 && _downY%100!=0) || (_downY%100==0 && _downY%400==0)) {
    
    
			_yearD[1].child.splice(28, 1)
			_prevY.push({
    
     "name": _downY + '年', "value": _downY + '', child: _yearD });
		} else {
    
    
			_yearD[1].child.splice(29, 1)
			_prevY.push({
    
     "name": _downY + '年', "value": _downY + '', child: _yearD });
		}

		// 前50年
		if((_upY%4==0 && _upY%100!=0) || (_upY%100==0 && _upY%400==0)) {
    
    
			_yearD[1].child.splice(28, 1)
			_nextY.unshift({
    
     "name": _upY + '年', "value": _upY + '', child: _yearD });
		} else {
    
    
			_yearD[1].child.splice(29, 1)
			_nextY.unshift({
    
     "name": _upY + '年', "value": _upY + '', child: _yearD });
		}
	}
	_allY = _prevY.concat(_nextY);
	return _allY;
}

添付:


  2月の日数の計算2月の日数は、主にうるう年かどうか、うるう年の場合は29日、うるう年でない場合は28日によって異なります。
  一般に、数学演算またはグレゴリオ暦年法では、100で割り切れるが、400で割り切れない年を除いて、4で割り切れる年のほとんどはうるう年です。
  1.世紀以外の年は4で割り切れる可能性があり、うるう年は100で割り切れません。(たとえば、2004年はうるう年ですが、1901年はうるう年ではありません)
  2。世紀に400で割り切れるうるう年はうるう年です。(2000年はうるう年ですが、1900年はうるう年ではありません)

おすすめ

転載: blog.csdn.net/qq_37992222/article/details/112324707