Come uso PHP per ottenere l'anno in corso?


937

Voglio mettere un avviso sul copyright a piè di pagina di un sito web, ma penso che sia incredibilmente pacchiano per l'anno che non è aggiornato. Come farei l'aggiornamento automatico dell'anno con PHP 4 e PHP 5 ?


630
echo date("Y");
doub1ejack,

2
Ho ricevuto un avviso usando quello. Aggiunto date_default_timezone_set ('UTC'); per evitare di ricevere l'avviso. ('UTC + 1' non funziona ... non posso dirti molto come iniziare con PHP). Probabilmente c'è un modo per configurare PHP per evitare di lanciare gli avvisi (in alcuni file di configurazione come php.ini).
justin

4
@justin Questo significa che non hai impostato il fuso orario predefinito e a PHP non piace. Puoi impostare il fuso orario predefinito nel php.inifile con qualcosa di simile date.timezone = "America/Los_Angeles"oppure puoi impostarlo all'inizio del codice con qualcosa di simile date_default_timezone_set( "America/Los_Angeles" ).
Joshua Pinter

7
NOTA: l'anno in una nota sul copyright non ha davvero molto valore legale, ma di solito viene aggiunto per aiutare le persone che vogliono sapere se il copyright è ancora valido. In quanto tale, dovrebbe essere l'anno della pubblicazione del lavoro. Il solo utilizzo dell'anno in corso non ha assolutamente senso ... Comunque l'ho visto fare innumerevoli volte.
Stijn de Witt

7
Personalmente direi che è diventata una convenzione sul web, quindi sebbene tu sia tecnicamente corretto, non è quello che la gente si aspetta. Resta il fatto che pur avendo, ad esempio "Copyright 2007, tutti i diritti riservati" impressi sul piè di pagina di una pagina contenente un articolo scritto nel 2007 è tecnicamente corretto, è probabile che i visitatori del sito presumano che il sito sia stato abbandonato. le società con squadre di avvocati stampano ancora le loro pagine web con l'anno in corso, anche se è "2007-2015".
Nathan Hornby,

Risposte:


1152

Puoi usare la data o l'ora legale . In questo caso direi che non importa come un anno sia un anno, non importa quale (a meno che non ci sia un locale che formatta l'anno in modo diverso?)

Per esempio:

<?php echo date("Y"); ?>

Una nota a margine, quando si formattano le date in PHP, è importante quando si desidera formattare la data in una lingua diversa da quella predefinita. Se è così, devi usare setlocale e strftime. Secondo il manuale di php alla data:

Per formattare le date in altre lingue, è necessario utilizzare le funzioni setlocale () e strftime () anziché date ().

Da questo punto di vista, penso che sarebbe meglio usare lo strftime il più possibile, se hai anche una remota possibilità di dover localizzare la tua applicazione. Se questo non è un problema, scegli quello che ti piace di più.


4
@ErikvanBrakel appena per interesse l'anno in corso in Thailandia è il 2556. Non sono sicuro che la localizzazione di PHP ne tenga conto, ma in un mondo perfetto dovrebbe :)
Dirk Hartzer Waldeck,

Potresti semplicemente dire: data ("Y");

Anni cinesi e giapponesi ftw! 2016 年 / 二千 十六 年
Panzercrisis,

3
Se potessi farlo su Youtube. "Come se lo stessi guardando in <? Php echo date (" Y ");?>"
Luka

Perché ho usato 'y'? : /
Guga Nemsitsveridze

515
<?php echo date("Y"); ?>

32
Inoltre,<?= date('Y') ?>
Shane Reustle il

33
i tag brevi non sono supportati da tutti i server e c'è anche questo: programmers.stackexchange.com/questions/151661/…
Dirk Hartzer Waldeck,

5
In PHP 5.4, puoi usare liberamente brevi tag echo come sopra. Sono molto più belli nelle viste imho.
Jimbo,

1
@ShaneReustle, alla fine hai perso i punti e virgola;) So che non sono importanti in questo caso, ma è una buona pratica per i principianti :)
Dimitar,

204

La mia versione super pigra di mostrare una linea di copyright, che rimane automaticamente aggiornata:

&copy; <?php 
$copyYear = 2008; 
$curYear = date('Y'); 
echo $copyYear . (($copyYear != $curYear) ? '-' . $curYear : '');
?> Me, Inc.

Quest'anno (2008) dirà:

© 2008 Me, Inc.

Il prossimo anno dirà:

© 2008-2009 Me, Inc.

e rimani sempre aggiornato con l'anno in corso.


Oppure (PHP 5.3.0+) un modo compatto per farlo usando una funzione anonima in modo da non avere perdite di variabili e non ripetere codice / costanti:

&copy; 
<?php call_user_func(function($y){$c=date('Y');echo $y.(($y!=$c)?'-'.$c:'');}, 2008); ?> 
Me, Inc.

15
Versione più breve (ma meno leggibile):&copy; <?php echo 2008 != date('Y') ? '2008 - ' . date('Y') : 2008; ?> Me, Inc.
hitautodestruct

La mia versione a una riga:<?php echo '&copy; 2008', ($year = gmdate("Y")) !== '2008'? ' - '.$year : '', ' Me, Inc.'; ?>
ale5000,

71

Con PHP diretto in una direzione più orientata agli oggetti, sono sorpreso che nessuno qui abbia fatto riferimento alla DateTimeclasse integrata :

$now = new DateTime();
$year = $now->format("Y");

o one-liner con accesso dei membri della classe all'istanza (php> = 5.4):

$year = (new DateTime)->format("Y");


28
strftime("%Y");

Adoro lo strftime . È un'ottima funzione per afferrare / ricombinare pezzi di date / orari.

Inoltre rispetta le impostazioni locali che la funzione data non svolge.


14

Questo ti dà l'ora locale:

$year = date('Y'); // 2008

E questo UTC :

$year = gmdate('Y'); // 2008


12

Ecco cosa faccio:

<?php echo date("d-m-Y") ?>

di seguito è un po 'di spiegazione di ciò che fa:

d = day
m = month
Y = year

Y ti darà quattro cifre (es. 1990) e y per due cifre (es. 90)


10

echo date('Y')ti dà l'anno in corso, e questo si aggiornerà automaticamente dal momento che date()ci danno la data corrente.



8

usa una funzione PHP appena chiamata date().

Prende la data corrente e quindi gli fornisci un formato

e il formato sarà solo Y. Il capitale Y sarà un anno a quattro cifre.

<?php echo date("Y"); ?>

8
<?php echo date("Y"); ?>

Questo codice dovrebbe fare


1
Cerca di evitare i tag di forma breve, sia <? o <? = perché non è una buona pratica. Vale la pena ricordare che molti buoni framework come Zend non consentono il collegamento di tag di apertura PHP abbreviato. Quindi, per amor mio, esegui alcuni tasti per salvare la tua leggibilità del codice.
Wael Assaf,


7

Scrivi e basta:

date("Y") // A full numeric representation of a year, 4 digits
          // Examples: 1999 or 2003

O:

date("y"); // A two digit representation of a year     Examples: 99 or 03

E 'eco' questo valore ...


5

Puoi utilizzare la semplice classe di date PHP. Fornisce molti metodi e funzioni utili:

$date = new simpleDate();
echo $date->now()->getYear(); 
echo $date->now()->getMonth();
echo $date->set('2013-01-21')->getDayString();
echo $date->now()->compare('2013-01-21')->isBefore();
...

Puoi controllare la pagina delle esercitazioni della biblioteca per ulteriori esempi


5

A proposito ... ci sono alcuni modi adeguati per visualizzare il copyright del sito. Alcune persone hanno la tendenza a rendere le cose ridondanti, ad esempio: Copyright © ha lo stesso significato. Le parti importanti del copyright sono:

**Symbol, Year, Author/Owner and Rights statement.** 

Utilizzando PHP + HTML:

<p id='copyright'>&copy; <?php echo date("Y"); ?> Company Name All Rights Reserved</p>

o

<p id='copyright'>&copy; <?php echo "2010-".date("Y"); ?> Company Name All Rights Reserved</p

5

Fino a php 5.4+

<?php
    $current= new \DateTime();
    $future = new \DateTime('+ 1 years');

    echo $current->format('Y'); 
    //For 4 digit ('Y') for 2 digit ('y')
?>

Oppure puoi usarlo con una riga

$year = (new DateTime)->format("Y");

Se vuoi aumentare o diminuire l'anno un altro metodo; aggiungi linea di modifica come di seguito.

<?PHP 
  $now   = new DateTime;
  $now->modify('-1 years'); //or +1 or +5 years 
  echo $now->format('Y');
  //and here again For 4 digit ('Y') for 2 digit ('y')
?>

5

usa una date()funzione PHP .

e il formato sarà solo Y. Il capitale Y sarà un anno a quattro cifre.

<?php echo date("Y"); ?>


3

Ottieni l'intero anno usato:

 <?php 
    echo $curr_year = date('Y'); // it will display full year ex. 2017
?>

Oppure usa solo due cifre dell'anno usate in questo modo:

 <?php 
    echo $curr_year = date('y'); // it will display short 2 digit year ex. 17
?>

3

Il mio modo di mostrare il copyright, che continua ad aggiornarsi automaticamente

<p class="text-muted credit">Copyright &copy;
    <?php
        $copyYear = 2017; // Set your website start date
        $curYear = date('Y'); // Keeps the second year updated
        echo $copyYear . (($copyYear != $curYear) ? '-' . $curYear : '');
    ?> 
</p>    

Produrrà i risultati come

copyright @ 2017   //if $copyYear is 2017 
copyright @ 2017-201x    //if $copyYear is not equal to Current Year.

2
<?php date_default_timezone_set("Asia/Kolkata");?><?=date("Y");?>

Puoi utilizzarlo nelle sezioni piè di pagina per ottenere un anno dinamico del copyright



-1
<?php
$time_now=mktime(date('h')+5,date('i')+30,date('s'));
$dateTime = date('d_m_Y   h:i:s A',$time_now);

echo $dateTime;
?>

1
Questo non è ciò che chiedono né una risposta spiegata.
Elliot A.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.