用 php 中的 unix 时间填充日历
Fill the calendar with unix time in php
我正在创建一个每周运行的 table 日历。日历看起来像这样
我使用 here 找到的代码来设置我的 header 日期。我的代码如下所示:
$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>';
现在,我需要在 data-reservation_time
中输入该单元格的 Unix
格式(这就是为什么有 $current_time
变量)的日期。因此,例如在 8:00 中星期五 20 的单元格中,该单元格中应该有 1448006400
。稍后我将使用它存储在数据库中。
但是我该怎么做呢?我被困在这一点上。感谢任何帮助。
编辑
找到答案了。在下面:)
您可以使用 strtotime 获取 unixtimstamp:
<?php
$date = date("d M Y");
$time = "15:00";
$unixTime = strtotime($date . " " . $time);
?>
类似于:
$return .= '<td data-reservation_time="' . strtotime($dt->format("Y-m-d") . " " . $hour . ":00:00") . '"></td>';
为了获取时间戳,请从您的 $dt
对象中获取日期,并从循环中获取时间。
好的,答案比我想象的要简单。好吧,我仍然不能 100% 确定第一部分是绝对正确的,但它应该是(按照我的逻辑)。
首先,创建本周的日期数组(由 this answer 提供)
$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);
}
第一个 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>';
我的约会时间在 data-time
,jquery 抢手的时机已经成熟 :D
我正在创建一个每周运行的 table 日历。日历看起来像这样
我使用 here 找到的代码来设置我的 header 日期。我的代码如下所示:
$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>';
现在,我需要在 data-reservation_time
中输入该单元格的 Unix
格式(这就是为什么有 $current_time
变量)的日期。因此,例如在 8:00 中星期五 20 的单元格中,该单元格中应该有 1448006400
。稍后我将使用它存储在数据库中。
但是我该怎么做呢?我被困在这一点上。感谢任何帮助。
编辑
找到答案了。在下面:)
您可以使用 strtotime 获取 unixtimstamp:
<?php
$date = date("d M Y");
$time = "15:00";
$unixTime = strtotime($date . " " . $time);
?>
类似于:
$return .= '<td data-reservation_time="' . strtotime($dt->format("Y-m-d") . " " . $hour . ":00:00") . '"></td>';
为了获取时间戳,请从您的 $dt
对象中获取日期,并从循环中获取时间。
好的,答案比我想象的要简单。好吧,我仍然不能 100% 确定第一部分是绝对正确的,但它应该是(按照我的逻辑)。
首先,创建本周的日期数组(由 this answer 提供)
$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);
}
第一个 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>';
我的约会时间在 data-time
,jquery 抢手的时机已经成熟 :D