Domanda

Devo creare un timestamp da inserire in MySQL. L'utente sta inviando un numero (di settimane) che devo aggiungere molte settimane alla data odierna. Quello che sto cercando di fare è calcolare una data di fine di un annuncio che l'utente sta inviando.

Qualche suggerimento su come farlo? Grazie!

È stato utile?

Soluzione

Puoi utilizzare strtotime per aggiungere l'ora a una data: accetta un secondo argomento che è l'ora corrente se non ne viene passato nessuno. Puoi quindi passare il tempo creato alla date per creare il tuo timestamp :

$timestamp = date('Y-m-d H:i:s', strtotime('+10 weeks'));

Altri suggerimenti

Penso che DATE_ADD (CURDATE (), INTERVAL 2 WEEK) aggiungerebbe 2 settimane alla data corrente, ad esempio

Se vuoi che l'annuncio scada a una certa ora del giorno puoi usare mktime:

    $ day = date (" d ") + ($ settimane * 7);
    mktime ($ all'ora, $ minuto, $ secondo, $ al mese, $ al giorno, $ l'anno);

Giusto per aggiungere, alcuni direbbero che archiviare l'ora UNIX come un semplice campo int nel database è la soluzione più flessibile e portatile. Inoltre, gli inserimenti e gli aggiornamenti avvengono più rapidamente perché comportano solo la memorizzazione di interi semplici. Dipende davvero da quanta manipolazione della data devi fare a livello di database. Tendo ad andare per la portabilità e fare tutti i miei calcoli della data in PHP. Per memorizzare il timestamp corrente, vorrei semplicemente inserire in una colonna intera l'output di:

strtotime('now');

o

time();

che entrambi restituiscono il timestamp corrente (unix). Successivamente il confronto delle date può essere fatto recuperando i timestamp dal database ed eseguendo semplici operazioni aritmetiche, banali come:

if($tsFromDb > strtotime('+28 days')) {
   echo 'it is the future, zombies!';
}

Dipende davvero da cosa stai usando le date.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top