@wow, indique por que nenhum dos 4530 resultados respondeu à sua pergunta.
Gordon
1
@Gordon Ainda estou aprendendo a escrever de A a Z, mas descobri que eles me ensinam a escrever de Z a A :)
uau,
@wow Não. Eles ensinam como escrever o alfabeto ($ from, $ to). Quase todos eles dizem para você usar date($format, strtotime($dateString))ou o DateTimeequivalente do objeto. Eles diferem apenas na entrada para essas funções. Tudo que você precisa fazer é ir para as páginas correspondentes no Manual do PHP e descobrir quais são as entradas.
Gordon
3
@Gordon Sim, você está correto. Eu só conhecia o alfabeto e agora era hora de soletrar. Espero que eu esteja na escola certa.
Eu observaria que usar DATE_ISO8601produz uma string de data que é ligeiramente diferente de ISO8601 (os dois pontos estão faltando no TZ, ISO8601 espera que os tempos sejam todos OU todos sem os dois pontos, não uma mistura) - date('c')produz uma data válida ISO 8601 estrita - Isso pode causar erros de rastreamento difícil se o código esperar um formato de data e hora ISO 8601 estrito. Ref: en.wikipedia.org/wiki/ISO_8601
ckm
38
Após o PHP 5, você pode usar isto: echo date("c");formulário de data e hora formatado em ISO 8601.
date($format, strtotime($dateString))
ou oDateTime
equivalente do objeto. Eles diferem apenas na entrada para essas funções. Tudo que você precisa fazer é ir para as páginas correspondentes no Manual do PHP e descobrir quais são as entradas.Respostas:
Orientado a Objeto
Esta é a forma recomendada.
Processual
Para versões mais antigas do PHP, ou se você estiver mais confortável com o código procedural.
fonte
2010-12-30T23:21:46+1100
como fazer isso ser2010-12-30T23:21:46+11:00
?preg_replace('/(?<=\d{2})(?=\d{2}$)/', ':', '2010-12-30T23:21:46+1100')
. Ele produz2010-12-30T23:21:46+11:00
.echo date('c', …
produz a saída com os dois pontos.date('c', strtotime('2010-12-30 23:21:46'))
legal @Gordon :)DATE_ISO8601
produz uma string de data que é ligeiramente diferente de ISO8601 (os dois pontos estão faltando no TZ, ISO8601 espera que os tempos sejam todos OU todos sem os dois pontos, não uma mistura) -date('c')
produz uma data válida ISO 8601 estrita - Isso pode causar erros de rastreamento difícil se o código esperar um formato de data e hora ISO 8601 estrito. Ref: en.wikipedia.org/wiki/ISO_8601Após o PHP 5, você pode usar isto:
echo date("c");
formulário de data e hora formatado em ISO 8601.http://ideone.com/nD7piL
Nota para comentários:
Em relação a isso , essas duas expressões são válidas para fuso horário, para formato básico:
±[hh]:[mm], ±[hh][mm], or ±[hh]
.Mas observe que + 0X: 00 está correto e + 0X00 está incorreto para uso prolongado. Portanto, é melhor usar
date("c")
. Uma discussão semelhante aqui .fonte
DATE_ISO8601
;+0X:00
vs+0X00
.'c'
eDATE_ISO8601
produzem representações de tempo ISO8601 válidas.DATE_ISO8601
não produz uma representação ISO8601 válida. DATE_ATOM, entretantoComo converter de ISO 8601 para unixtimestamp:
Como converter de unixtimestamp para ISO 8601 (servidor de fuso horário):
Como converter de unixtimestamp para ISO 8601 (GMT):
Como converter de unixtimestamp para ISO 8601 (fuso horário personalizado):
fonte
fonte
Se você tentar definir um valor em datetime-local
fonte