Date in php

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
salve a tutti

ho un piccolo quesito

c'è qualcosa ch3e non mi torna

sto creando un sistema ad orario cioè quando la data odierna è maggiore o minore ad una data prefissata los cript deve fare questo o quello

allora

ho ragionato cosi

recupero il numero della data odierna
PHP:
date();
$datan=date ("H,i,s,m,d,Y");
$datax=mktime($datan);

ora che scrivo mi restituisce " 1296376753" e sono le 9,39.13

se provo a mettere una data antecedente a questa ad esempio

PHP:
date();
$data=date ("23,45,59,12,29,2010");
$dataf=mktime($data);

mi restituisce "1296427153"

ora 1296427153 è maggiore a 1296376753 mentre non dovrebbe essere così dato che il 29 Gennaio è inferiore al 30 Gennaio

dato che devo eseguire una serie di if dove

PHP:
if dataf<$datax .........esegui lo script

provando però a mettere al 31 gennaio mi esce un numero maggiore a quello del 30

cosa mi sfugge della questione?

ho cercato in giro ma non ho trovato niente al riguardo, o perlomeno niente che mis erve

magari è sbagliata la funzione mktime?
 
ciao
cosi ad occhio e croce non sbagli mktime, ma a scrivere
$data=date ("23,45,59,12,29,2010");
i paramentri 23,45, ecc... non sono i parametri con cui si imposta date();
http://it.php.net/manual/en/function.date.php
per cui con quella scrittura chissà cosa ti restituisce

23,45,59 sarebbe l'orario alle ore 23.45.59 scade il termine nella funzione mktime

in realta facevo una prova però la data è impostata così

$data=date ("23:45:59:12:29:2010");

puoi darmi un suggerimento su come impostare sta cosa?
 
No, forse non hai capito. La funzione date non accetta una data in input. Nel tuo caso devi usare direttamente mktime. Prova così:
PHP:
<?php
// giorno attuale, ore 23:49:50
$time = mktime(23, 45, 59, date('d'), date('m'), date('Y'));

// se ancora non sono le 23:49:50
if(time() < $time)
{
	// esegui lo script
}
?>
 
ciao
ho fatto delle prova
al posto di mktime() prova ad usare strttime() , in questo caso però devi impostare le date nel formato americano
es. aaaa-mm-dd HH:ii:ss -> 2011-01-29 12:02:32
quarda questo esempio:

PHP:
<?php
$datan=date("Y-m-d H:i:s");//formato americano
var_dump($datan);echo "Xu<br>";//data attuale formato americano (umano)
$datanTS=strtotime($datan);//la porto in time stamp
var_dump($datanTS);echo "Xt<br>";//data attuale formato timestamp
echo "riprova ".date("Y-m-d H:i:s",$datanTS)." Xu<br>";//riprovo a convertire
$dataf="2011-01-29 12:02:32";//imposto una data in formato americano (umano)
var_dump($dataf);echo "Fu<br>";//data impostata formato americano (umano)
$datafTS=strtotime($dataf);//la porto in time stamp
var_dump($datafTS);echo "Ft<br>";//data impostata formato timestamp
echo "riprova ".date("Y-m-d H:i:s",$datafTS)." Fu<br>";//riprovo a convertire
//e qui l'if
if($datanTS >= $datafTS){
	echo "la data attuale è maggiore o uguale all'impostata<br>";
}else{
	echo "la data attuale è minore dell'impostata<br>";
}
?>
modificando $dataf vedrai che l'if-else funzia

p.s.
ho riprovato anche con mktime, ma c'è qualcosa che non mi torna
 
ciao solare
di preciso non so neanch'io
ma facendo due volte mktime() il valore era sempre uguale come indicava nel primo post monital, anche scrivendo le stringhe giuste
 

Discussioni simili