2010-04-09 13 views
10

Non so come spiegarlo correttamente ma solo alcuni esempi per voi ragazzi in modo che possiate davvero ottenere ciò che sto cercando di dire.php get time date future

Oggi è il 09 aprile 2010

7 giorni da oggi è aprile 16,2010

Im che cerca un codice PHP, che mi può dare la data precisa dando il numero di giorni dell'intervallo prima della data odierna.

Ho cercato un thread che possa risolvere o dare un suggerimento su come risolvere questo problema, ma non ne ho trovato nessuno.

+0

Questo potrebbe eventualmente essere riformulato come "Voglio aggiungere' $ x' numero di giorni in una determinata data "? – deceze

+0

La tua domanda non è chiara. Puoi specificare nuovamente quali sono i parametri conosciuti e quali sono i valori che ti interessano? –

risposta

25

Se si utilizza PHP> = 5.2, vi consiglio caldamente di utilizzare il nuovo oggetto DateTime, che rende il lavoro con date molto più facile:

<?php 
$date = new DateTime("2006-12-12"); 
$date->modify("+7 day"); 
echo $date->format("Y-m-d"); 
?> 
+0

ottima risposta ,, mi aiuta molto –

+1

o per un 1 liner 'echo date_create (" 2006-12-12 ") -> modifica (" + 7 giorno ") -> formato (" Y-m-d ");' –

9

dare uno sguardo qui - http://php.net/manual/en/function.strtotime.php

<?php 
// This is what you need for future date from now. 
echo date('Y-m-d H:i:s', strtotime("+7 day")); 

// This is what you need for future date from specific date. 
echo date('Y-m-d H:i:s', strtotime('01/01/2010 +7 day')); 
?> 
+0

+1. Potresti non voler 'echo strtotime (...)'. Invece, usa il valore restituito all'interno della funzione data, come ad esempio 'echo date ('Y-m-d H: i: s', strtotime ('- 7 giorni'))'. –

0

È possibile utilizzare mktime con la data. (http://php.net/manual/en/function.date.php)

Data ti dà la data corrente. È meglio che aggiungere/sottrarre semplicemente a un timestamp poiché può tenere conto dell'ora legale.

<?php 
# this gets you 7 days earlier than the current date 
$lastWeek = mktime(0, 0, 0, date("m") , date("d")-7, date("Y")); 
# now pretty-print it out (eg, prints April 2, 2010.) 
echo date("F j, Y.", $lastWeek), "\n"; 
?> 
2

Si dovrà esaminare strtotime(). Mi immagino il codice finale sarebbe simile a questa:

$future_date = "April 16,2010"; 
$seconds = strtotime($future_date) - time(); 
$days = $seconds /(60 * 60* 24); 
echo $days; //Returns "6.0212962962963" 
+0

"6.0212962962963" - esempio classico di problema di precisione float PHP :) –

+0

Non proprio, solo il numero _exact_ di giorni rappresentato come decimale. – Sam152

1

Se si utilizza PHP> = 5.3, questa potrebbe essere un'opzione.

<?php 
$date = new DateTime("2006-12-12"); 
$date->add(new DateInterval("P7D")); 
?> 
5

La risposta accettata non è sbagliato, ma non è la soluzione migliore:

Il DateTime classe prende una stringa opzionale nel costruttore, che può definire la stessa logica della modificare metodo.

<?php 
$date = new DateTime("+7 day"); 

Ad esempio:

<?php 
namespace DateTimeExample; 

$now = new \DateTime("now"); 
$inOneWeek = new \DateTime("+7 day"); 

printf("Now it's the %s", $now->format('Y-m-d')); 
printf("In one week it's the %s", $inOneWeek->format('Y-m-d')); 

Per un elenco dei disponibili formati relativi (per il costruttore DateTime) dare un'occhiata a http://php.net/manual/de/datetime.formats.relative.php