[Resolvido] Data e hora com fuso horário

Estou consumindo uma API e preciso enviar a data no seguinte formato: 2017-12-04T15:30:41-03:00. Como posso formatar uma data 2017-12-04 15:30:41 no formato mencionado anteriorme ?

Ola,

Use o simple date formate, https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");        
GregorianCalendar gc = new GregorianCalendar();
String dateString = sdf.format(gc.getTime()); 
System.out.println(dateString);

No caso, estou consumindo a API em PHP.

no lugar de sdf.format use sdf.parse(dataRecebidaViaApi)

Você quis dizer que está usando PHP para consumir a API certo?

Nesse caso use a classe DateTime

Há formatos predefinidos que você pode usar, um muito parecido com esse que você quer é o DateTime::ATOM ou DateTime::ISO8601

Para formatar seria algo assim…

<?php
$data = new DateTime("2017-12-04 15:30:41");
echo $data->format(DateTime::ATOM);

Exatamente, estou consumindo a API com PHP.

Funcionou perfeitamente.

Só uma dúvida, eu me referia ao “-03:00” da data “2017-12-04T15:30:41-03:00” como fuso horário, isso está correto ?

Putz, :smiley:

Cara nem vi que era php, ja fui dando a solucao em java.:relaxed:

1 curtida

Sim, esse 3 é de GMT 3 / horário oficial de brasília :grinning:

O -03:00 é apenas um offset em relação ao horário central e pode variar para o mesmo lugar. Por exemplo, brasilia durante o horário de verão é -02:00.

O ideal é especificar o fuso horário que a sua data se encontra pelo identificador, e não pelo offset, por exemplo: America/Sao_Paulo.