2017-01-31 2 views
0

Я пытался преобразовать формат даты. например, у меня есть два вида формата:Как сделать формат даты первой даты с другой датой

формат 1 Tue, 31 Jan 2017 07:41:06 GMT

ФОРМАТ2 2017-01-31T07:41:06.7366667

Есть ли способ, чтобы преобразовать формат-же с ФОРМАТ2 или наоборот? Заранее спасибо.

+0

Как обычно, вам нужны два форматирования. Один для синтаксического анализа строки и другой для печати результата первого форматирования. Однако, если вы хотите работать с устаревшим 'SimpleDateFormat'-классом и' java.util.Date', тогда, пожалуйста, поймите, что вы потеряете микросекунды второго примера (ограниченного точностью до миллисекунды). –

+0

это нормально, чтобы потерять микросекунды, поскольку первый формат не имеет микросекунд. Большое спасибо. Есть ли какое-либо решение сейчас? – creulo

ответ

0

Используйте два отдельных форматтеры для входа и выхода:

SimpleDateFormat inputFormatter = 
    new SimpleDateFormat("E, d MMM yyyy HH:mm:ss z", Locale.ENGLISH); 
SimpleDateFormat outputFormatter = 
    new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"); 
outputFormatter.setTimeZone(TimeZone.getTimeZone("GMT")); 
String converted = 
    outputFormatter.format(
    inputFormatter.parse("Tue, 31 Jan 2017 07:41:06 GMT")); 
System.out.println(converted); 
// output: 2017-01-31T07:41:06.000 

Аналогичный подход может быть достигнуто в Java-8 с новым классом DateTimeFormatter.

Смежные вопросы