2011-11-08 11 views
9

Jaki jest najprostszy sposób to zrobić w Javie? Idealnie będę używał czas uniksowy w milisekundach na wejściu i wyjściu funkcja String jakKonwersja czasu Unix do czytelnej Data w Javie

November 7th, 2011 o 5:00 PM

+1

Pan spojrzał na kalendarz ?: http://download.oracle .com/javase/1.5.0/docs/api/java/util/Calendar.html –

+1

Dlaczego nie oszukasz z ['SimpleDateFormat'] (http://download.oracle.com/javase/7/docs /api/java/text/SimpleDateFormat.html) i daj nam znać, czy/kiedy utkniesz? –

Odpowiedz

18
SimpleDateFormat sdf = new SimpleDateFormat("MMMM d, yyyy 'at' h:mm a"); 
String date = sdf.format(myTimestamp); 
+0

Działa to naprawdę dobrze, z wyjątkiem sytuacji, gdy kończy się na "0", na przykład 1:40 lub 5:20, 0 nie będzie wyświetlane. – SeanPONeil

+0

Przepraszam, spróbuj h: mm zamiast h: m – GoalieGuy6

+1

Zrobiłem jan 1970 jako wynik, gdy mój znacznik czasu był z jan 2015. Mnożenie znacznika czasu przez 1000L robi lewę. –

3

chciałem przekonwertować moje unix_timestamps jak 1372493313 do czytelnej format jak 29 czerwca 4:08.

Powyższe odpowiedzi pomogły mi w kodzie aplikacji na Androida. Niewielka różnica polegała na tym, że na Androidzie zaleca się również używanie ustawień regionalnych, a mój oryginalny unix_timestamp był w sekundach, a nie milisekundach, a Eclipse chciał dodać blok try-catch lub wyrzucić wyjątek. Więc mój kod roboczy musi zostać zmodyfikowany nieco tak:

/** 
* 
* @param unix_timestamp 
* @return 
* @throws ParseException 
*/ 
private String unixToDate(String unix_timestamp) throws ParseException {  
    long timestamp = Long.parseLong(unix_timestamp) * 1000; 

    SimpleDateFormat sdf = new SimpleDateFormat("MMM d H:mm", Locale.CANADA); 
    String date = sdf.format(timestamp); 

    return date.toString(); 
} 

A oto kod wywołujący:

String formatted_timestamp; 
try { 
     formatted_timestamp = unixToDate(unix_timestamp); // timestamp in seconds 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
0
java.util.Date date = new java.util.Date((long) time * 1000L); 

SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); 

simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 
Powiązane problemy