Joomla.it Forum

Non solo Joomla... => Sviluppo => : franant 10 Jul 2010, 19:59:11

: [RISOLTO]Come aggiungere una settimana alla data di pubblicazione di un articolo
: 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
: Re:[plugin]Come aggiungere una settimana alla data di pubblicazione di un articolo?
: mmleoni 10 Jul 2010, 21:50:54
ciao,
 è sicuramente meglio usare JDate (docs.joomla.org/JDate) per non incorrere in problemi di parsing tra i vari locales.

ciao,
marco
: Re:[plugin]Come aggiungere una settimana alla data di pubblicazione di un articolo?
: mau_develop 11 Jul 2010, 01:11:52
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.
: Re:[plugin]Come aggiungere una settimana alla data di pubblicazione di un articolo?
: = odino = 11 Jul 2010, 10:55:00
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"))
: Re:[plugin]Come aggiungere una settimana alla data di pubblicazione di un articolo?
: franant 11 Jul 2010, 14:18:36
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
: Re:[plugin]Come aggiungere una settimana alla data di pubblicazione di un articolo?
: mmleoni 11 Jul 2010, 14:35:46
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


: Re:[plugin]Come aggiungere una settimana alla data di pubblicazione di un articolo?
: franant 11 Jul 2010, 14:47:18
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