2010-09-03 9 views

Répondre

17

Si vous avez ces dates sous forme de chaînes, vous pouvez simplement utiliser strtotime(), si vous n'avez qu'une information partielle, vous pouvez utiliser mktime().

Cependant, Septembre a seulement 30 jours;)

Exemple:

$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

Je n'ai pas ces chaînes, les 2 paramètres passés via la chaîne de requête sont mois et année. De là, je dois travailler le 1er et le dernier timestamps. – dotty

+0

Ok, édité ma réponse –

+0

Voici comment je l'ai écrit mais je suis venu problème de fabrik avec $ days_in_month = cal_days_in_month (CAL_GREGORIAN, $ mois, $ année); – dotty

1

Peut-être que cela peut être fait plus simple, mais vous voyez l'idée:

<?php 

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

?> 
4

Si vous utilisez PHP 5.3 (ne pas essayer ceci avec 5.2, l'analyseur de date fonctionne différemment là) vous pourriez parler:

<?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 besoin de deux timestamps pas une date formatée si j'ai raison. – fabrik

+0

Édité dans le getTimestamp, le format était juste une preuve rapidement exploitable que cela fonctionne. Merci ! – edorian