2015-11-19 18 views
5

Haftalık olarak çalışan bir masa takvimi oluşturuyorum. takvim benim başlık tarihleri ​​kurmak için here bulunan kod kullanılan buTakvimi unix saati ile doldurun php

enter image description here

benziyor. Ben kod şuna benzer:

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

Şimdi, o hücrenin, ($current_time değişken olduğu bu yüzden) Unix formatında benim data-reservation_time tarih koymak gerekir. Yani örneğin hücrede saat 20: 00'de, o hücrede 1448006400 olmalıdır. Bunu daha sonra veritabanında saklamak için kullanacağım.

Ama bunu nasıl yaparım? Bu noktada sıkıştım. Herhangi bir yardım takdir edilir.

DÜZENLEME cevabı bulundu. Aşağıda bu :)

cevap

0

Tamam, cevabı düşündüğümden daha basit. Yine de ilk kısmın kesinlikle doğru olduğundan% 100 emin değilim, ama (mantığım gereği) olmalıdır.

Birincisi, bu hafta için tarihler dizisi oluşturmak (this answer curtesy)

$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); 
} 

ilk if else döngü Bugün pazartesi ise bir sonraki Pazar doğru diziyi dolduracak şekilde de (kontrol etmekti aynı hafta). Salı günü ise, zaman damgası referansı son pazartesidir. Sonra

Ve tıpkı kez data-time yılında jquery kapma için olgun bir 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>'; 

Ve tarihleri ​​yapın: D Elimden biliyorum

0

Sen unixtimstamp kullanarak strtotime alabilirsiniz:

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

ama tarih ve saati göstermek gerekir her hücre için tablo. –

0

şey gibi:

, zaman damgası almak için $dt nesneden gün almak için ve zamanla
$return .= '<td data-reservation_time="' . strtotime($dt->format("Y-m-d") . " " . $hour . ":00:00") . '"></td>'; 

döngüden.

+0

Bu, yukarıdaki tablodaki hafta yerine haftaya geri döner, bunu zaten denedim: \ –