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:
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 .
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 =newDateTime();
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 =newDateTime(null,newDateTimeZone('America/New_York'));
$now->setTimezone(newDateTimeZone('Europe/London'));// Another way
echo $now->getTimezone();
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.
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)
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:
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)
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));
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 =newDateTime('2000-01-01');
echo $date->format('Y-m-d H:i:sP')."\n";// Specified date/time in the specified time zone.
$date =newDateTime('2000-01-01',newDateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP')."\n";// Current date/time in your computer's time zone.
$date =newDateTime();
echo $date->format('Y-m-d H:i:sP')."\n";// Current date/time in the specified time zone.
$date =newDateTime(null,newDateTimeZone('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 =newDateTime('@946684800');
echo $date->format('Y-m-d H:i:sP')."\n";// Non-existent values roll over.
$date =newDateTime('2000-02-30');
echo $date->format('Y-m-d H:i:sP')."\n";?>
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'
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. :)
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.
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.
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
// 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)?>
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:
d - Representa o dia do mês (01 a 31)
m - Representa um mês (01 a 12)
Y - representa um ano (em quatro dígitos)
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");?>
// 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));
$date = date('m/d/Y h:i:s a', time());
Respostas:
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_set
antes que as funçõesdate()
outime()
sejam chamadas.Estou em Melbourne, na Austrália , então tenho algo parecido com isto:
Ou outro exemplo é LA - US :
Você também pode ver em que fuso horário o servidor está atualmente via:
Então, algo como:
Portanto, a resposta curta para sua pergunta seria:
Todos os horários seriam no fuso horário que você acabou de definir :)
fonte
Para uma referência de fuso horário, consulte Lista de fusos horários suportados .
fonte
Desde o PHP,
5.2.0
você pode usar aDateTime()
classe:E para especificar o
timezone
:fonte
Datatime
espaç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.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
fonte
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.
Como Paolo mencionou nos comentários, o segundo argumento é redundante. O seguinte snippet é equivalente ao acima:
fonte
Você pode usar a
$_SERVER['REQUEST_TIME']
variável (disponível desde o PHP 5.1.0) ou atime()
função para obter o registro de data e hora atual do Unix.fonte
time()
função é independente do fuso horário. (Então, chamandodate_default_timezone_set("your-particular-timezone");
antes não terá efeito.)Você pode usar a
$_SERVER['REQUEST_TIME']
variável ou atime()
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
:fonte
$_SERVER['REQUEST_TIME']
?A função de data do PHP pode fazer esse trabalho.
encontro()
Descrição:
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:
fonte
Atualizar
Para o formato da data, a função PHP date () é útil.
fonte
fonte
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.
date
método (PHP 4, PHP 5, PHP 7)Esta é a maneira mais comum e fácil de obter a data e a hora no php.
Você pode aprender mais sobre isso aqui
2.
DateTime
classe (PHP 5> = 5.2.0, PHP 7)Quando você deseja usar PHP com OOP, esta é a melhor maneira de obter data e hora.
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.
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.
fonte
Usar:
Funciona.
fonte
Esse código obterá a data e a hora do servidor em que o código é executado.
fonte
Você também pode usar este formato:
Ou
fonte
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
date
classe com qualquer versão do PHP ou melhorar adatetime
classe 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
.Exemplo usando a classe datetime
Essa expressão retornará AGORA no formato
Y-m-d H:i:s
.fonte
Imprime assim
Domingo, 9 de dezembro de 2012
fonte
fonte
Defina seu fuso horário:
Em seguida, chame as funções de data
fonte
A
date
funçã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 -
Como obter uma data simples
O parâmetro de formato necessário da
date()
função especifica como formatar odate (or time)
.Aqui estão alguns caracteres que são comumente usados para datas:
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:
Alguns links úteis
fonte
Se você quiser uma escala de tempo diferente, use:
fonte
fonte
O formato da data também depende:
fonte
Você pode usar este código:
fonte
Eu descobri que a maneira mais simples de obter a hora atual em PHP é algo assim.
fonte
Outra maneira simples é obter o registro de data e hora da data e hora atuais. Use a função mktime () :
Em seguida, você pode converter isso para outro formato de data:
Mais formatos de data estão aqui: http://php.net/manual/en/function.date.php
fonte
Muito simples
fonte
fonte
Se você é de Bangladesh e deseja conhecer o tempo de Dhaka , use o seguinte:
fonte
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:
Esta função mostra o tempo de 24 horas.
fonte
Aqui estão alguns caracteres que são comumente usados por vezes:
a - Ante meridiem em minúsculas e Post meridiem (am ou pm)
Obtenha seu fuso horário
Verifique isso (opcional)
Para data
Aqui estão alguns caracteres que são comumente usados para datas:
Fonte-W3-Escolas
fonte
.
emdate("Y/m/d") . ;
?