用 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