如何将此功能从php转换为javascript / jquery?

时间:2018-03-16 17:50:11

标签: javascript php jquery migration

我的目的是获取我选择的每月/每年的所有日期列表。除此之外,我还会在最终结果中添加额外的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);
}

2 个答案:

答案 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;
}