Joomla.it Forum
Non solo Joomla... => Sviluppo => : franant 10 Jul 2010, 19:59:11
-
Ciao a tutti,
avrei bisogno di far aumentare automaticamente di una settimana la data di pubblicazione di ogni nuovo articolo che vado a scrivere. Praticamente, dovrei prendere la data di pubblicazione dell'ultimo articolo imesso (se c'è) ed aumentarla di una settimana, e salvare l'articolo con la data aggiornata.
Sto scrivendo un plugin apposta, però non riesco a manipolare la data... forse uso male le funzioni del php (uso date() e strtotime())... credo ci sia un problema di incompatibilità di formati... infatti il mio plugin mi da sempre "1970-01-08 01:33:30", che mi pare sia la data base dei sistemi unix...
Potete darmi qualche dritta?
Grazie
Francesco
-
ciao,
è sicuramente meglio usare JDate (docs.joomla.org/JDate) per non incorrere in problemi di parsing tra i vari locales.
ciao,
marco
-
credo che comunque lo faccia molto bene anche mysql con un dateadd o adddate.. date + ....nn ricordo la sintassi ma ricordo che si può fare una somma aritmetica tra date e un numero ..
il metodo corretto cmq è seguire ciò che dice Marco.
M.
-
ciao,
è sicuramente meglio usare JDate (docs.joomla.org/JDate) per non incorrere in problemi di parsing tra i vari locales.
dubito, perchè comunque le date vengono salvate in datetime, quindi a lui basterebbe convertirla nel formato datetime.
Non so neppure se JDate ha un wrapper per strtotime.
Comunque quello di cui ha bisogno è un semplice:
date( 'Y-m-d H:i:s', strtotime("+1 week"))
-
Grazie a tutti per le risposte! :)
è sicuramente meglio usare JDate (docs.joomla.org/JDate) per non incorrere in problemi di parsing tra i vari locales.
il metodo corretto cmq è seguire ciò che dice Marco.
Si, dopo un po' di prove, sono riuscito ad usare JDate e funziona alla grande!
dubito, perchè comunque le date vengono salvate in datetime, quindi a lui basterebbe convertirla nel formato datetime.
Non so neppure se JDate ha un wrapper per strtotime.
Ho risolto questo inconveniente in questo modo:
$dataVecchia = new JDate($article->publish_up);
$secondiDataVecchia = $dataVecchia->_date;
$secondiDataNuova = $secondiDataVecchia + 604800;
$dataNuova = new JDate($secondiDataNuova);
$article->publish_up = $dataNuova->toMySQL();
Ho notato che in ogni caso l'oggetto JDate memorizza la data nel formato Unix standard (i secondi trascorsi dal 1970). Quindi, alla fine mi è bastato aggiungere i secondi che ci sono in una settimana, e poi convertire il tutto al formato di MySQL con il metodo toMySQL() dell'oggetto JDate.
Comunque quello di cui ha bisogno è un semplice:
date( 'Y-m-d H:i:s', strtotime("+1 week"))
Si, avevo provato proprio questo metodo, solo che non riuscivo a mettere come data di base la data di pubblicazione dell'ultimo articolo salvato.
Grazie a tutti di nuovo per l'aiuto
Francesco
-
io direi:
$dataVecchia = new JDate($article->publish_up);
$dataNuova = new JDate($dataVecchia->toUnix() + 604800);
$article->publish_up = $dataNuova->toMySQL();
metodi e proprietà che iniziano con '_' debbono essere considerati come privati.
ciao,
marco
-
io direi:
$dataVecchia = new JDate($article->publish_up);
$dataNuova = new JDate($dataVecchia->toUnix() + 604800);
$article->publish_up = $dataNuova->toMySQL();
metodi e proprietà che iniziano con '_' debbono essere considerati come privati.
Ok, perfetto. Grazie mille :)
Francesco