Back to top

Autore Topic: [RISOLTO]Come aggiungere una settimana alla data di pubblicazione di un articolo  (Letto 2774 volte)

Offline franant

  • Nuovo arrivato
  • *
  • Post: 30
    • Mostra profilo
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
« Ultima modifica: 11 Lug 2010, 14:48:14 da franant »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
ciao,
 è sicuramente meglio usare JDate (docs.joomla.org/JDate) per non incorrere in problemi di parsing tra i vari locales.

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

mau_develop

  • Visitatore
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.

Offline = odino =

  • Instancabile
  • ******
  • Post: 5696
  • Sesso: Maschio
  • "In realtà li trasforma in menomati" Danzel
    • Mostra profilo
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:
Codice: [Seleziona]
date( 'Y-m-d H:i:s', strtotime("+1 week"))

Offline franant

  • Nuovo arrivato
  • *
  • Post: 30
    • Mostra profilo
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:
Codice: [Seleziona]
$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:
Codice: [Seleziona]
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

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
io direi:

Codice: [Seleziona]
$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


mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline franant

  • Nuovo arrivato
  • *
  • Post: 30
    • Mostra profilo
io direi:

Codice: [Seleziona]
$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

 



Web Design Bolzano Kreatif