我正在创建一个每周工作的表日历.日历看起来像这样
我使用我在这里找到的代码来设置标题日期.我的代码看起来像这样:
$dt = new DateTime;
$dt->setISODate($dt->format('o'), $dt->format('W'));
$year = $dt->format('o');
$week = $dt->format('W');
$current_time = time();
$return .= '<table class="reservation_time_table">
<tr><th>'.esc_html__('Hours', 'time_reservation').'</th>';
do {
$return .= '<th>' . $dt->format('l') . '<br>' . $dt->format('d M Y') . '</th>';
$dt->modify('+1 day');
} while ($week == $dt->format('W'));
$return .= '</tr>';
for ($hour=8; $hour < 23 ; $hour++) {
$return .= '<tr>';
$return .= '<th>'.$hour.':00</th>';
for ($i=0; $i <7 ; $i++) {
$return .= '<td data-reservation_time=""></td>';
}
$return .= '</tr>';
}
$return .= '</table>';
Run Code Online (Sandbox Code Playgroud)
现在,我需要data-reservation_time在Unix格式中输入该格式的日期(这就是为什么有$current_time变量).因此,例如在8:00的星期五20的单元格中,应该1448006400在该单元格中.我稍后会用它来存储在数据库中.
但是我该怎么做?我陷入了困境.任何帮助表示赞赏.
编辑
找到了答案.它在下面:)
好吧,答案比我想象的要简单。好吧,我仍然不能 100% 确定第一部分绝对正确,但它应该是(按照我的逻辑)。
首先,创建本周的日期数组(感谢这个答案)
$today = time();
if (date('D', $today) === 'Mon') {
$timestamp = strtotime('this Monday');
} else{
$timestamp = strtotime('last Monday');
}
$days = array();
$dates = array();
for ($i = 0; $i < 7; $i++) {
$days[] = strftime('%A <br /> %d %b %Y', $timestamp);
$dates[] = strftime('%d %b %Y', $timestamp);
$timestamp = strtotime('+1 day', $timestamp);
}
Run Code Online (Sandbox Code Playgroud)
第一个if else循环是检查今天是否是星期一,以便您在下星期日(同一周)填充数组。如果是星期二,则时间戳参考是上星期一。
然后就做一个foreach
$return .= '<table class="reservation_time_table">
<tr><th>'.esc_html__('Hours', 'time_reservation').'</th>';
foreach ($days as $day => $day_value) {
$return .= '<th>'.$day_value.'</th>';
}
$return .= '</tr>';
for ($hour=8; $hour < 23 ; $hour++) {
$return .= '<tr>';
$return .= '<th>'.$hour.':00</th>';
foreach ($dates as $date => $date_value) {
$full_hour = $hour. ':00';
$return .= '<td data-time="'.strtotime($date_value. ' ' .$full_hour).'"></td>';
}
$return .= '</tr>';
}
$return .= '</table>';
Run Code Online (Sandbox Code Playgroud)
我的日期和时间都在data-time,jquery 抓取已经成熟了:D