2010-09-03 9 views

Odpowiedz

17

Jeśli masz te daty jako łańcuchy, możesz po prostu użyć strtotime(), jeśli masz tylko częściowe informacje, możesz użyć mktime().

Jednak września ma tylko 30 dni;)

Przykład:

$month = 9; 
$year = 2010; 

$first = mktime(0,0,0,$month,1,$year); 
echo date('r', $first); 

$last = mktime(23,59,00,$month+1,0,$year); 
echo date('r', $last); 
+0

Nie mam tych ciągów, 2 parametry przekazane za pomocą kwerendy to miesiąc i rok. Stamtąd muszę pracować nad 1. i ostatnim znacznikiem czasu. – dotty

+0

Ok, zredagowałem moją odpowiedź –

+0

Tak to napisałem, ale nadszedł problem fabrik z $ days_in_month = cal_days_in_month (CAL_GREGORIAN, $ month, $ year); – dotty

1

Może można to zrobić prościej, ale masz pomysł:

<?php 

$start = mktime(0, 0, 1, $month, 1, $year); 
$end = mktime(23, 59, 00, $month, date('t', $month), $year); 

?> 
4

Jeśli używasz PHP 5.3 (nie próbuj tego z 5.2, parser dat pracuje tam inaczej), możesz mówić:

<?php 

$date = "2010-05-10 00:00:00"; 

$x = new DateTime($date); 

$x->modify("last day of this month"); 
$x->modify("last second"); 

echo $x->format("Y-m-d H:i:s"); 
// 2010-05-30 23:59:59 
$timestamp = $x->getTimestamp(); 
+1

OP potrzebuje dwóch znaczników czasu, a nie sformatowanej daty, jeśli mam rację. – fabrik

+0

Edytowane w getTimestamp, format był tak szybki, że to działa. Dzięki ! – edorian

Powiązane problemy