如何使用 jQuery 获取所有没有星期日的日期?
How to Fetch all dates without sunday using jQuery?
我想获取一个月的所有日期。采用类似 {2019-9-17} 的格式,但我不想在那天包括星期日。假设我一个月有 30 天,假设我们有 4 个星期日,我只想打印除星期日以外的所有日期。
PS:我正在使用日期选择器,在 jQuery 日期选择器
的帮助下传递月份和年份
onClose: function() {
var iMonth = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
var iYear = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
$(this).datepicker('setDate', new Date(iYear, iMonth, 1));
var my_month=(parseInt(iMonth) + 1);
console.log('datepicker month='+my_month);
$('.test').empty();
var date = new Date();
var month = date.getMonth();
var current_date = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate();
//console.log(current_date);
date.setDate(1);
var all_days = [];
var week = [];
while (date.getMonth() == month) {
// Getting all days from here and storing in array named as all)days();
var d = date.getFullYear() + '-' + my_month.toString().padStart(2, '') + '-' + date.getDate().toString().padStart(2, '0');
all_days.push(d);
date.setDate(date.getDate() + 1);
//$('.test').append(all_days);
}
console.log(all_days);
$(document).ready(function() {
$('#txtDate').datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'MM yy',
minDate:0,
onClose: function() {
var iMonth = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
var iYear = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
$(this).datepicker('setDate', new Date(iYear, iMonth, 1));
var my_month=(parseInt(iMonth) + 1);
console.log('datepicker month='+my_month);
$('.test').empty();
var date = new Date();
var month = date.getMonth();
var current_date = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate();
//console.log(current_date);
date.setDate(1);
var all_days = [];
var week=[];
while (date.getMonth() == month) {
var d = date.getFullYear() + '-' + my_month.toString().padStart(2, '') + '-' + date.getDate().toString().padStart(2, '0');
all_days.push(d);
date.setDate(date.getDate() + 1);
$('.test').append(all_days);
}
console.log(all_days);
},
beforeShow: function() {
if ((selDate = $(this).val()).length > 0)
{
iYear = selDate.substring(selDate.length - 4, selDate.length);
iMonth = jQuery.inArray(selDate.substring(0, selDate.length - 5), $(this).datepicker('option', 'monthNames'));
$(this).datepicker('option', 'defaultDate', new Date(iYear, iMonth, 1));
$(this).datepicker('setDate', new Date(iYear, iMonth, 1));
}
},
});
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="myjs2.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.2/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.theme.default.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js"></script>
<link rel="stylesheet" href="style2.css">
<style>
body
{
font-family:Arial;
font-size : 10pt;
padding:15px;
}
.ui-datepicker-calendar {
display: none;
}
</style>
<title>yes</title>
</head>
<body>
<form action="process.php" method="post">
Select Date : <input type='text' id='txtDate' name="mydate" />
<input type="hidden" name="ak" id="ak">
</form>
<div class="test"></div>
</body>
</html>
您只需更改 while
即可检查 date.getDay()
是否为 !== 0
:
while (date.getMonth() == month) {
//Getting all days from here and storing in array named as all)days();
if (date.getDay() === 0){
continue;
}
var d = date.getFullYear() + '-' + my_month.toString().padStart(2, '') + '-' + date.getDate().toString().padStart(2, '0');
all_days.push(d);
date.setDate(date.getDate() + 1);
//$('.test').append(all_days);
}
我喜欢那个功能getDaysInMonth它很容易理解,所以我扩展了它
/**
*
* @param {int} The month number, 0 based
* @param {int} The year, not zero based, required to account for leap years
* @param {Array} Which days to exclude Sunday is 0, Monday is 1, and so on.
* @returns {Date[]} List with date objects
*/
function getDaysInMonthWithExclude(month, year, excludeweekdays) {
var date = new Date(Date.UTC(year, month, 1));
var days = [];
while (date.getMonth() === month) {
if (excludeweekdays.indexOf(date.getDay()) === -1) {
days.push(new Date(date));
}
date.setDate(date.getDate() + 1);
}
return days;
}
console.log(getDaysInMonthWithExclude(8, 2019, [0]));
我想获取一个月的所有日期。采用类似 {2019-9-17} 的格式,但我不想在那天包括星期日。假设我一个月有 30 天,假设我们有 4 个星期日,我只想打印除星期日以外的所有日期。
PS:我正在使用日期选择器,在 jQuery 日期选择器
的帮助下传递月份和年份 onClose: function() {
var iMonth = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
var iYear = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
$(this).datepicker('setDate', new Date(iYear, iMonth, 1));
var my_month=(parseInt(iMonth) + 1);
console.log('datepicker month='+my_month);
$('.test').empty();
var date = new Date();
var month = date.getMonth();
var current_date = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate();
//console.log(current_date);
date.setDate(1);
var all_days = [];
var week = [];
while (date.getMonth() == month) {
// Getting all days from here and storing in array named as all)days();
var d = date.getFullYear() + '-' + my_month.toString().padStart(2, '') + '-' + date.getDate().toString().padStart(2, '0');
all_days.push(d);
date.setDate(date.getDate() + 1);
//$('.test').append(all_days);
}
console.log(all_days);
$(document).ready(function() {
$('#txtDate').datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'MM yy',
minDate:0,
onClose: function() {
var iMonth = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
var iYear = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
$(this).datepicker('setDate', new Date(iYear, iMonth, 1));
var my_month=(parseInt(iMonth) + 1);
console.log('datepicker month='+my_month);
$('.test').empty();
var date = new Date();
var month = date.getMonth();
var current_date = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate();
//console.log(current_date);
date.setDate(1);
var all_days = [];
var week=[];
while (date.getMonth() == month) {
var d = date.getFullYear() + '-' + my_month.toString().padStart(2, '') + '-' + date.getDate().toString().padStart(2, '0');
all_days.push(d);
date.setDate(date.getDate() + 1);
$('.test').append(all_days);
}
console.log(all_days);
},
beforeShow: function() {
if ((selDate = $(this).val()).length > 0)
{
iYear = selDate.substring(selDate.length - 4, selDate.length);
iMonth = jQuery.inArray(selDate.substring(0, selDate.length - 5), $(this).datepicker('option', 'monthNames'));
$(this).datepicker('option', 'defaultDate', new Date(iYear, iMonth, 1));
$(this).datepicker('setDate', new Date(iYear, iMonth, 1));
}
},
});
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="myjs2.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.2/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.theme.default.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js"></script>
<link rel="stylesheet" href="style2.css">
<style>
body
{
font-family:Arial;
font-size : 10pt;
padding:15px;
}
.ui-datepicker-calendar {
display: none;
}
</style>
<title>yes</title>
</head>
<body>
<form action="process.php" method="post">
Select Date : <input type='text' id='txtDate' name="mydate" />
<input type="hidden" name="ak" id="ak">
</form>
<div class="test"></div>
</body>
</html>
您只需更改 while
即可检查 date.getDay()
是否为 !== 0
:
while (date.getMonth() == month) {
//Getting all days from here and storing in array named as all)days();
if (date.getDay() === 0){
continue;
}
var d = date.getFullYear() + '-' + my_month.toString().padStart(2, '') + '-' + date.getDate().toString().padStart(2, '0');
all_days.push(d);
date.setDate(date.getDate() + 1);
//$('.test').append(all_days);
}
我喜欢那个功能getDaysInMonth它很容易理解,所以我扩展了它
/**
*
* @param {int} The month number, 0 based
* @param {int} The year, not zero based, required to account for leap years
* @param {Array} Which days to exclude Sunday is 0, Monday is 1, and so on.
* @returns {Date[]} List with date objects
*/
function getDaysInMonthWithExclude(month, year, excludeweekdays) {
var date = new Date(Date.UTC(year, month, 1));
var days = [];
while (date.getMonth() === month) {
if (excludeweekdays.indexOf(date.getDay()) === -1) {
days.push(new Date(date));
}
date.setDate(date.getDate() + 1);
}
return days;
}
console.log(getDaysInMonthWithExclude(8, 2019, [0]));