我的目的是获取我选择的每月/每年的所有日期列表。除此之外,我还会在最终结果中添加额外的html。
我创建了这个php函数,但注意到它更好,因为我会在html中编辑它,如果我在我的标签上进行编辑。
代码列表我发送的所有日期和月份/年的工作日名称(我也转换语言结果)。
我试过但是甚至无法创建一个很好的基础开始,我很难找到一种方法来使用javascript复制相同的想法。
我的php功能
function getDays($month = 0, $year = 0){
$list = array();
$month = $month == 0 ? (int)date('m') : $month;
$year = $year == 0 ? (int)date('Y') : $year;
$weekName = ['Mon' => 'Seg', 'Tue' => 'Ter', 'Wed' => 'Qua', 'Thu' => 'Qui', 'Fri' => 'Sex', 'Sat' => 'Sáb', 'Sun' => 'Dom'];
for($d=1; $d<=31; $d++)
{
$time=mktime(12, 0, 0, $month, $d, $year);
if (date('m', $time)==$month) {
$list[]= date('d', $time) . ' | ' . $weekName[date('D', $time)].'.';
}
}
echo json_encode($list);
}
答案 0 :(得分:1)
看到你确实想出了答案,这里是一个优化版本,因为每次都不需要创建一个数组,并且不需要在循环中使用新的日期。也是几个月从0开始:
var dias = ['Sun-Dom', 'Mon-Seg', 'Tue-Ter', 'Wed-Qua', 'Thu=Qui', 'Fri-Sex', 'Sat-Sab'];
function getDays(year, month) {
month--; // JS months start at 0
var dSta = new Date(year, month, 1);
var dEnd = new Date(year, month + 1, 0);
var ret = [];
var idx = dSta.getDay()-1; // 0th day
for (var i = dSta.getDate(), end = dEnd.getDate(); i <= end; i++) {
ret.push(i + ' - ' + dias[(i+idx)%7]);
}
return ret;
}
console.log(getDays(2018,2)); // 2 = Feb which is month 1 in JS
console.log(getDays(2020,2));
答案 1 :(得分:0)
稍微扭转一下,以下工作就完成了......
modules: { _.merge(contactData, { state: { otherData: null } } ) }
之后,只需致电
function getDays(year, month)
{
var dias = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'];
var dSta = new Date(year,month,1);
var dEnd = new Date(year,month+1,0);
var ret = [];
for(var i = dSta.getDate(); i <= dEnd .getDate();i++)
{
ret.push(i + ' - ' + dias[new Date(year, month, i).getDay()]);
}
return ret;
}