2015-11-19 7 views
5

Ich erstelle einen Tischkalender, der auf der wöchentlichen Basis funktioniert. Der Kalender sieht wie folgt ausFüllen Sie den Kalender mit Unix-Zeit in PHP

enter image description here

I-Code benutzte ich here fand meine Kopfdaten einzurichten. Der Code, den ich habe sieht wie folgt aus:

$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>'; 

Jetzt muss ich in meinem data-reservation_time das Datum in Unix Format bringen (das ist, warum gibt es $current_time Variable), von dieser Zelle. Also zum Beispiel in der Zelle für Freitag 20 in 8:00 sollte 1448006400 in dieser Zelle sein. Ich werde das später in der Datenbank speichern.

Aber wie mache ich das? Ich stecke an diesem Punkt fest. Jede Hilfe wird geschätzt.

EDIT

die Antwort gefunden. Es ist unten :)

Antwort

0

Ok, die Antwort war einfacher als ich dachte. Nun, ich bin immer noch nicht 100% sicher, dass der erste Teil absolut korrekt ist, aber es sollte (nach meiner Logik) sein.

zunächst eine Reihe von Terminen für diese Woche erstellen (curtesy von 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); 
} 

Die ersten if else Schleife war zu prüfen, ob heute Montag ist, so dass Sie das Array in Richtung des nächsten Sonntags füllen (in in derselben Woche). Wenn Dienstag ist, dann ist die Zeitstempelreferenz der letzte Montag.

Und dann einfach ein 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>'; 

Und meine Termine mit Zeiten sind in data-time, reif für jquery Grabbing: D

0

Sie können die unixtimstamp mit strtotime erhalten:

<?php 
$date = date("d M Y"); 
$time = "15:00"; 
$unixTime = strtotime($date . " " . $time); 
?> 
+0

Ich weiß, ich kann, aber ich brauche das Datum und die Zeit zu zeigen, die Tabelle für jede Zelle. –

0

Etwas wie:

$return .= '<td data-reservation_time="' . strtotime($dt->format("Y-m-d") . " " . $hour . ":00:00") . '"></td>'; 

Um den Zeitstempel zu erhalten, den Tag von Ihrem $dt Objekt zu erhalten, und die Zeit aus der Schleife.

+0

Dies kommt nächste Woche statt der Woche in der Tabelle oben, ich habe das bereits versucht: \ –

Verwandte Themen