Como obtenho a data e hora atuais em PHP?


Respostas:


623

O tempo passaria pelo tempo do seu servidor. Uma solução fácil para isso é definir manualmente o fuso horário usando date_default_timezone_setantes que as funções date()ou time()sejam chamadas.

Estou em Melbourne, na Austrália , então tenho algo parecido com isto:

date_default_timezone_set('Australia/Melbourne');

Ou outro exemplo é LA - US :

date_default_timezone_set('America/Los_Angeles');

Você também pode ver em que fuso horário o servidor está atualmente via:

date_default_timezone_get();

Então, algo como:

$timezone = date_default_timezone_get();
echo "The current server timezone is: " . $timezone;

Portanto, a resposta curta para sua pergunta seria:

// Change the line below to your timezone!
date_default_timezone_set('Australia/Melbourne');
$date = date('m/d/Y h:i:s a', time());

Todos os horários seriam no fuso horário que você acabou de definir :)


101
A chamada para a hora () é redundante, a data () usa automaticamente a hora atual.
php demais

11
O OP nunca perguntou sobre o fuso horário. Uma resposta mais simples e correta simplesmente mostraria a hora do servidor.
precisa saber é o seguinte

43
@AyexeM Na verdade, apreciei as informações adicionais sobre o fuso horário. Isso me salvou uma segunda pesquisa.
Marquizzo

5
Você pode obter tudo o fuso horário daqui Time Zone
Yousef Altaf

13
@AyexeM Uma resposta mais simples e correta não seria omitir informações potencialmente importantes e relacionadas, mas responder à pergunta, como você sugere, mas fornecer informações adicionais sobre os fusos horários abaixo. Não há necessidade de omitir informações potencialmente cruciais apenas porque não foram solicitadas.
Jamie

524
// Simply:
$date = date('Y-m-d H:i:s');

// Or:
$date = date('Y/m/d H:i:s');

// This would return the date in the following formats respectively:
$date = '2012-03-06 17:33:07';
// Or
$date = '2012/03/06 17:33:07';

/** 
 * This time is based on the default server time zone.
 * If you want the date in a different time zone,
 * say if you come from Nairobi, Kenya like I do, you can set
 * the time zone to Nairobi as shown below.
 */

date_default_timezone_set('Africa/Nairobi');

// Then call the date functions
$date = date('Y-m-d H:i:s');
// Or
$date = date('Y/m/d H:i:s');

// date_default_timezone_set() function is however
// supported by PHP version 5.1.0 or above.

Para uma referência de fuso horário, consulte Lista de fusos horários suportados .


12
Esta é uma resposta muito mais direta do que a primeira. Obrigado!
dev_willis

1
Obrigado pela ligação de fusos horários suportados, eu estava prestes a google :)
htafoya

190

Desde o PHP, 5.2.0você pode usar a DateTime()classe:

use \Datetime;

$now = new DateTime();
echo $now->format('Y-m-d H:i:s');    // MySQL datetime format
echo $now->getTimestamp();           // Unix Timestamp -- Since PHP 5.3

E para especificar o timezone:

$now = new DateTime(null, new DateTimeZone('America/New_York'));
$now->setTimezone(new DateTimeZone('Europe/London'));    // Another way
echo $now->getTimezone();

2
esta é uma boa resposta, mas u esqueceu de dizer que precisamos de uso \ data e hora antes de chamar isso :) ty
Amor.o

@ Amor.o Obrigado pelo aviso, atualizei a resposta agora - embora um pouco atrasada e sinceramente não me lembro de receber uma notificação pelo seu comentário. Em relação ao uso do Datatimeespaço para nome; Não me lembro se foi esse o caso em 2013 e não escrevo nenhum código PHP há anos. Independentemente disso, sua sugestão parece estar correta, então obrigado novamente.
Mahdi

Você é bem-vindo :)
Amor.o 16/03

95

Referência: Aqui está um link

Isso pode ser mais confiável do que simplesmente adicionar ou subtrair o número de segundos em um dia ou mês a um carimbo de data / hora devido ao horário de verão.

O código PHP

// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone

$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$today = date("H:i:s");                         // 17:16:18
$today = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (the MySQL DATETIME format)

certamente o melhor ~
Yash Kumar Verma 22/09

67

Time () do PHP retorna um timestamp atual do Unix. Com isso, você pode usar a função date () para formatá-la de acordo com suas necessidades.

$date = date('Format String', time());

Como Paolo mencionou nos comentários, o segundo argumento é redundante. O seguinte snippet é equivalente ao acima:

$date = date('Format String');

17
o segundo argumento da função date é assumido como time () se deixado em branco.
21711 Paolo Bergantino

66

Você pode usar a $_SERVER['REQUEST_TIME']variável (disponível desde o PHP 5.1.0) ou a time()função para obter o registro de data e hora atual do Unix.


1
Vale ressaltar que o registro de data e hora retornado pela time()função é independente do fuso horário. (Então, chamando date_default_timezone_set("your-particular-timezone");antes não terá efeito.)
ban-geoengenharia

@ ban-geoengineering - não sei o que você quer dizer com "independente do fuso horário"; é "dependente" do fuso horário em que o servidor está definido? Você pode ter um servidor na costa leste definido como um fuso horário na costa oeste ou vice-versa.
Neal Davis

56

Você pode usar a $_SERVER['REQUEST_TIME']variável ou a time()função. Ambos retornam um carimbo de data / hora Unix.

Na maioria das vezes, essas duas soluções produzem exatamente o mesmo carimbo de data e hora do Unix . A diferença entre eles é que $_SERVER['REQUEST_TIME']retorna o carimbo de data e hora da solicitação mais recente do servidor etime() retorna o horário atual. Isso pode criar pequenas diferenças na precisão, dependendo da sua aplicação, mas na maioria dos casos, essas duas soluções devem ser suficientes.

Com base no seu código de exemplo acima, você desejará formatar essas informações depois de obter o carimbo de data e hora do Unix . O tempo Unix não formatado se parece com:1232659628

Portanto, para obter algo que funcione, você pode usar a date()função para formatá-lo.

Uma boa referência para maneiras de usar a date()função está localizada no Manual do PHP .

Como exemplo, o código a seguir retorna uma data parecida com esta 01/22/2009 04:35:00 pm:

echo date("m/d/Y h:i:s a", time());

Como os diferentes servidores da web lidam $_SERVER['REQUEST_TIME'] ?
Pacerier 19/03/2015

Melhor resposta mãos para baixo. Você até mesmo adicionar como ir de UNIX timestamp a data normal de pessoa que é muito apreciado
Kolob Canyon

45

A função de data do PHP pode fazer esse trabalho.

encontro()

Descrição:

string date(string $format [, int $timestamp = time()])

Retorna uma string formatada de acordo com a string de formato especificada usando o carimbo de data / hora inteiro especificado ou a hora atual se nenhum carimbo de data / hora for fornecido.

Exemplos:

$today = date("F j, Y, g:i a");               // March 10, 2001, 5:16 pm
$today = date("m.d.y");                       // 03.10.01
$today = date("j, n, Y");                     // 10, 3, 2001
$today = date("Ymd");                         // 20010310
$today = date('h-i-s, j-m-y, it is w Day');   // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y");             // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');   // 17:03:18 m is month
$today = date("H:i:s");                       // 17:16:18
$today = date("Y-m-d H:i:s");                 // 2001-03-10 17:16:18 (the MySQL DATETIME format)

27
 $date = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
 echo $date->format('d-m-Y H:i:s');

Atualizar

 //Also get am/pm in datetime:
 echo $date->format('d-m-Y H:i:s a'); // output 30-12-2013 10:16:15 am

Para o formato da data, a função PHP date () é útil.



25

Para o novo programador PHP, podemos confundir por que existem muitos métodos para obter data e hora atuais e qual usar em seu projeto.

1. datemétodo (PHP 4, PHP 5, PHP 7)

Esta é a maneira mais comum e fácil de obter a data e a hora no php.

// set the default timezone to use. Available since PHP 5.1
date_default_timezone_set('UTC');


// Prints something like: Monday
echo date("l");

// Prints something like: Monday 8th of August 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');

// Prints: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

/* use the constants in the format parameter */
// prints something like: Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);

// prints something like: 2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));

Você pode aprender mais sobre isso aqui

2. DateTimeclasse (PHP 5> = 5.2.0, PHP 7)

Quando você deseja usar PHP com OOP, esta é a melhor maneira de obter data e hora.

<?php
// Specified date/time in your computer's time zone.
$date = new DateTime('2000-01-01');
echo $date->format('Y-m-d H:i:sP') . "\n";

// Specified date/time in the specified time zone.
$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";

// Current date/time in your computer's time zone.
$date = new DateTime();
echo $date->format('Y-m-d H:i:sP') . "\n";

// Current date/time in the specified time zone.
$date = new DateTime(null, new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";

// Using a UNIX timestamp.  Notice the result is in the UTC time zone.
$date = new DateTime('@946684800');
echo $date->format('Y-m-d H:i:sP') . "\n";

// Non-existent values roll over.
$date = new DateTime('2000-02-30');
echo $date->format('Y-m-d H:i:sP') . "\n";
?>

Você pode aprender mais sobre isso aqui

3. Pacote de data e hora do carbono

se você estiver usando o Composer , o Laravel , o Symfony ou qualquer outra estrutura, essa é a melhor maneira de obter a data e a hora. Além disso, este pacote estende a classe DateTime no php para que você use todo o método na classe Datetime. Isso inclui estruturas como o laravel, para que você não precise instalá-lo separadamente.

printf("Right now is %s", Carbon::now()->toDateTimeString());
printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver')); // automatically converted to string
$tomorrow = Carbon::now()->addDay();
$lastWeek = Carbon::now()->subWeek();

// Carbon embed 823 languages:
echo $tomorrow->locale('fr')->isoFormat('dddd, MMMM Do YYYY, h:mm');
echo $tomorrow->locale('ar')->isoFormat('dddd, MMMM Do YYYY, h:mm');

$officialDate = Carbon::now()->toRfc2822String();

$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;

$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');

$internetWillBlowUpOn = Carbon::create(2038, 01, 19, 3, 14, 7, 'GMT');

if (Carbon::now()->isWeekend()) {
    echo 'Party!';
}
echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'

Você pode aprender mais sobre isso aqui

Espero que isso ajude e, se você conhece outra maneira de obter a data e a hora, fique à vontade para editar a resposta.


Eu gostei de outras respostas que mostram como formatar a string, mesmo com texto personalizado, ou digamos qual é o melhor formato para MySQL, etc., mas eu definitivamente aceitaria essa por mostrar todos os três tipos e usos: procedural, orientado a objeto e estrutura OOP .
s3c 29/04

1
@ s3c Eu poderia ter respondido algo assim, mas a pergunta é "Como faço para obter a data e hora atuais em PHP?", nosso foco principal deve estar na pergunta. :)
Supun Praneeth

21

Usar:

$date = date('m/d/Y h:i:s a', time());

Funciona.


O que quero dizer é que o tempo volta EST quando estou no PST ... mas por quê? É a hora do servidor e o servidor é EST? Posso ter tempo para os usuários? O servidor deles pode estar em outro fuso horário, não?

A função date é a hora do seu servidor, verifique-a ou defina-a temporariamente / w PHP antes de executar a data.
TravisO 22/01/09

obrigado, meu serviço não deve estar atualizado com php porque O funciona para GMT, mas não para o fuso horário P ou "e" ... obrigado !!

Este $ date = data ('m / d / Y h: i: s a', time ()); obtém a data do servidor, mas ainda não me fornece a data do usuário. Isso está me mostrando na EST quando estou na PST. Quero obter a data em que o usuário envia o formulário e, como eu, o servidor pode estar em um fuso horário diferente.

Na verdade, agora que penso nisso, a hora não é tão importante quanto a data. OBRIGADO A TODOS !!

18
echo date("d-m-Y H:i:sa");

Esse código obterá a data e a hora do servidor em que o código é executado.


1
Voto negativo para resposta enganosa. Não, ele não terá o tempo da sua máquina local, a menos que você esteja executando o servidor localmente também. Ele receberá a data e a hora do servidor.
MattWithoos

@MattWithoos - "Este código obterá a data e a hora do" servidor ", ele não disse nada sobre a" máquina local "que você disse. Você também não precisa estar executando o servidor" localmente "- você pode ter um servidor . em qualquer lugar do mundo conjunto para qualquer fuso horário que deseja seu voto para baixo foi morto errado e por nenhuma razão
Neal Davis

1
@NealDavis Você pensou em olhar para a edição? Publiquei esse comentário, sugeri uma edição das informações incorretas e, enquanto isso, esperava que elas fossem aprovadas. Agora está aprovado e mostra as informações corretas.
precisa saber é o seguinte

1
@NealDavis Além disso, se você se incomodou em ler a postagem original, ela dizia literalmente "Este código obterá a data e a hora da sua máquina local (PC)". Isso é totalmente enganador.
precisa saber é o seguinte

16

Você também pode usar este formato:

$date = date("d-m-Y");

Ou

$date = date("Y-m-d H:i:s");

14

De acordo com o artigo Como obter data e hora atuais (NOW) com PHP , existem duas maneiras comuns de obter a data atual. Para obter a data e hora atuais (agora) com o PHP, você pode usar a dateclasse com qualquer versão do PHP ou melhorar a datetimeclasse com o PHP> = 5.2.

Várias expressões de formato de data estão disponíveis aqui.

Exemplo usando data

Essa expressão retornará AGORA no formato Y-m-d H:i:s.

<?php
    echo date('Y-m-d H:i:s');
?>

Exemplo usando a classe datetime

Essa expressão retornará AGORA no formato Y-m-d H:i:s.

<?php
    $dt = new DateTime();
    echo $dt->format('Y-m-d H:i:s');
?>

13
<?php
echo "<b>".date('l\, F jS\, Y ')."</b>";
?>

Imprime assim

Domingo, 9 de dezembro de 2012


12
<?php
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone

$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$today = date("H:i:s");                         // 17:16:18
$today = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (the MySQL DATETIME format)
?>

11

Defina seu fuso horário:

date_default_timezone_set('Asia/Calcutta');

Em seguida, chame as funções de data

$date = date('Y-m-d H:i:s');

11
date(format, timestamp)

A datefunção retorna uma cadeia de caracteres formatada de acordo com a cadeia de formato especificada usando o registro de data e hora inteiro especificado ou o horário atual se nenhum registro de data e hora for fornecido. Em outras palavras, timestampé opcional e o padrão é o valor de time ().

E os parâmetros são -

formato - obrigatório. Especifica o formato do registro de data e hora

registro de data e hora - (Opcional) Especifica um registro de data e hora. O padrão é a data e hora atuais

Como obter uma data simples

O parâmetro de formato necessário da date()função especifica como formatar o date (or time).

Aqui estão alguns caracteres que são comumente usados ​​para datas:

  1. d - Representa o dia do mês (01 a 31)
  2. m - Representa um mês (01 a 12)
  3. Y - representa um ano (em quatro dígitos)
  4. l ('L' minúsculo) - representa o dia da semana

Outros caracteres, como "/", ".", or "-"também podem ser inseridos entre os caracteres para adicionar formatação adicional.

O exemplo abaixo formata a data de hoje de três maneiras diferentes:

<?php
    echo "Today is " . date("Y/m/d") . "<br>";
    echo "Today is " . date("Y.m.d") . "<br>";
    echo "Today is " . date("Y-m-d") . "<br>";
    echo "Today is " . date("l");
?>

Alguns links úteis

  • gmdate () - Formata uma data / hora GMT / UTC
  • idate () - Formata uma hora / data local como inteiro
  • getdate () - obtém informações de data / hora
  • getlastmod () - Obtém o tempo da última modificação da página
  • mktime () - obtém o carimbo de data e hora do Unix para uma data
  • strftime () - Formata uma hora / data local de acordo com as configurações de localidade
  • time () - Retorna o timestamp atual do Unix
  • strtotime () - Analisa qualquer descrição de data e hora em texto em inglês em um carimbo de data / hora do Unix
  • Constantes DateTime predefinidas

10

Se você quiser uma escala de tempo diferente, use:

$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
$nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);

date_default_timezone_set("Asia/Calcutta");
echo date("Y/m/d H:i:s");

O que você quer dizer com "escala de tempo"?
Peter Mortensen

"fuso horário", provavelmente.
Saneem 11/03/14

2
Acredito @Jaymin pode dizer, se você quiser ajustar o tempo à frente de um dia, voltar um mês, etc.
Just Plain alta

10
date_default_timezone_set('Europe/Warsaw');
echo("<p class='time'>".date('H:i:s')."</p>");
echo("<p class='date'>".date('d/m/Y')."</p>");

10

O formato da data também depende:

echo date("d/m/Y H:i:sa"); // 13/04/2017 19:38:15pm

Isso é dificilmente compreensível. Você pode elaborar?
Peter Mortensen

10

Você pode usar este código:

<?php
    $currentDateTime = date('Y-m-d H:i:s');
    echo $currentDateTime;
?>

9

Eu descobri que a maneira mais simples de obter a hora atual em PHP é algo assim.

//Prints out something like 10:00am Just be sure to set your timezone correctly.
date_default_timezone_set("America/Chicago");
$TIME = date('G:ia'); 

8

Outra maneira simples é obter o registro de data e hora da data e hora atuais. Use a função mktime () :

$now = mktime(); // Return timestamp of the current time

Em seguida, você pode converter isso para outro formato de data:

//// Prints something like: Thursday 26th of January 2017 01:12:36 PM
echo date('l jS \of F Y h:i:s A',$now);

Mais formatos de data estão aqui: http://php.net/manual/en/function.date.php



6
// Set the default timezone to use. Available since PHP 5.1
date_default_timezone_set('UTC');


// Prints something like: Monday
echo date("l");

// Prints something like: Monday 8th of August 2016 03:12:46 PM
echo date('l jS \of F Y h:i:s A');

// Prints: July 1, 2016 is on a Saturday
echo "July 1, 2016 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2016));

/* Use the constants in the format parameter */
// Prints something like: Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);

// Prints something like: 2016-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));

6

Se você é de Bangladesh e deseja conhecer o tempo de Dhaka , use o seguinte:

$date = new DateTime();
$date->setTimeZone(new DateTimeZone("Asia/Dhaka"));
$get_datetime = $date->format('d.m.Y H:i:s');

6

Normalmente, essa função para data é útil para todos: date ("Y / m / d");

Mas o tempo é algo diferente, porque a função de tempo depende da versão do PHP ou da data do sistema.

Então, provavelmente, use-o assim para obter nosso próprio fuso horário:

$date = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
echo $date->format('H:m:s');

Esta função mostra o tempo de 24 horas.


definiu a data para 1970 para mim!
IKamy

5

Aqui estão alguns caracteres que são comumente usados ​​por vezes:

  1. h - formato de 12 horas de uma hora com zeros à esquerda (01 a 12)
  2. i - Minutos com zeros à esquerda (00 a 59)
  3. s - Segundos com zeros à esquerda (00 a 59)
  4. a - Ante meridiem em minúsculas e Post meridiem (am ou pm)

Obtenha seu fuso horário

<?php
    date_default_timezone_set("America/New_York");
    echo "The time is " . date("h:i:sa");
?>

Verifique isso (opcional)

<?php
    $d = mktime(11, 14, 54, 8, 12, 2014);
    echo "Created date is " . date("Y-m-d h:i:sa", $d);
?>

Para data

<?php
    echo "Today is " . date("Y/m/d") . ;
    echo "Today is " . date("Y.m.d") . ;
    echo "Today is " . date("Y-m-d") . ;
    echo "Today is " . date("l");
?>

Aqui estão alguns caracteres que são comumente usados ​​para datas:

  1. d - Representa o dia do mês (01 a 31)
  2. m - Representa um mês (01 a 12)
  3. Y - representa um ano (em quatro dígitos)
  4. l ('L' minúsculo) - representa o dia da semana

Fonte-W3-Escolas


1
Qual é o propósito da fuga .em date("Y/m/d") . ;?
Peter Mortensen

Para concatenar outra string ou variável, eu acho. Obrigado por suas edições. :-)
Raheel Khan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.