2013-12-05 3 views
0

Я получаю эпохальную строку из моей БД, которая выглядит примерно так: 1391328000000Преобразовать эпохальную строку на сегодняшний день Java

Я с трудом пытается преобразовать его в Java Date.

Я попытался следующие:

private String buildDate(String dateString){ 
     System.out.println("dateString " + dateString); 

     DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); 
     format.setTimeZone(TimeZone.getTimeZone("Etc/UTC")); 
     String formatted = format.format(Integer.parseInt(dateString)); 

     return formatted; 
    } 
+2

Ну, что дата это значит представлять? И вам действительно нужно получить его как строку, а не как число? (Я подозреваю, что это действительно миллисекунды с эпохи unix.) –

ответ

3

Я думаю, что вы задумываетесь о DateFormat. Если я хочу, чтобы просто получить Date экземпляр, что я хотел бы попробовать следующий:

Date d = new Date(Long.parseLong(dateString)); 
3

Вам нужно, чтобы превратить его в java.util.Date объект для того, чтобы SimpleDateFormat, чтобы справиться с этим. Кроме того, значение, подобное цитируемому, должно быть проанализировано как long, так как оно слишком велико для int.

То есть, изменить строку, где вы установили formatted быть:

String formatted = format.format(new Date(Long.parseLong(dateString))); 

Как и в сторону, если проект вы работаете может обрабатывать дополнительную внешнюю зависимость, дату переключения/время обработки к joda library. Материал в java.util (то есть Date и Calendar) быстро становится болезненным и подверженным ошибкам для работы.

+1

Вам не нужно делать дату с SimpleDateFormat. Реализация формата java.text.Format # (Object obj) 'достаточно дружественна, чтобы преобразовать Number to Date для вас. – Affe

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