2014-10-14 4 views
0

Я пытаюсь преобразовать даты в временные метки Unix в Java. Примеры дат моих являются: "Пт 5 июня 15:53:07 PDT 2009"Форматы форматирования даты в Java

Мой код:

DateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy"); 
Date date = dateFormat.parse(dateString); 
long unixTime = (long) date.getTime()/1000; 
System.out.println("Unix Time: " + unixTime); 
double unixFloat = unixTime; 

Данная ошибка:

Exception in thread "main" java.text.ParseException: Unparseable date: "Fri Jun 05 15:53:07 PDT 2009" 

Как правильно шаблон?

+0

Дау пн дд чч: мм: сс ZZZ гггг в соответствии с http://docs.oracle.com/javase/7/docs/api/java/util/Date.html#toString() – EpicPandaForce

+0

Ур-код работает на меня. Возможно, присвойте 'dateString' другому значению. – blackSmith

ответ

2

Вам нужно установить Locale, в некоторых случаях, если вы не установить локаль вы можете столкнуться таких проблем.

Например:

DateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy" 
                    ,Locale.US); 

От Javadoc.

SimpleDateFormat также поддерживает локализованный шаблон даты и времени строки. В этих строках буквы шаблонов, описанные выше, могут быть заменены на на другие, зависящие от языка, шаблонные буквы. SimpleDateFormat не имеет дело с локализацией текста другого , чем буквы шаблона; это зависит от клиента класса.

+0

Спасибо, работал для меня! – user1684645

+0

@ пользователь1684645 добро пожаловать. –

1

Это, вероятно, Locale вопрос - Fri является Пятницы на английском языке, но не на французском или немецком языке, например:

DateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH); 
Смежные вопросы