2011-11-08 33 views
9

Cách dễ nhất để làm điều này trong Java là gì? Lý tưởng nhất là tôi sẽ sử dụng thời gian Unix trong mili giây như là đầu vào và đầu ra chức năng sẽ một String nhưChuyển đổi thời gian Unix thành Ngày có thể đọc được trong Java

ngày 7 tháng 11 năm 2011 lúc 5:00 PM

+1

Bạn đã nhìn Lịch ?: http://download.oracle .com/javase/1.5.0/docs/api/java/util/Calendar.html –

+1

Tại sao bạn không đánh lừa với ['SimpleDateFormat'] (http://download.oracle.com/javase/7/docs /api/java/text/SimpleDateFormat.html) một chút và cho chúng tôi biết nếu/khi bạn gặp khó khăn? –

Trả lời

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

Điều này hoạt động thực sự tốt, ngoại trừ khi kết thúc bằng '0', chẳng hạn như 1:40 hoặc 5:20, số 0 sẽ không được hiển thị. – SeanPONeil

+0

Xin lỗi, hãy thử h: mm thay vì h: m – GoalieGuy6

+1

Tôi đã nhận được jan 1970 là đầu ra khi dấu thời gian của tôi là năm 2015. Nhân dấu thời gian của 1000L thực hiện thủ thuật. –

3

tôi muốn chuyển đổi unix_timestamps tôi như 1372493313 để human readable định dạng như ngày 29 tháng 6 4:08.

Câu trả lời ở trên đã giúp tôi cho mã ứng dụng Android của mình. Một sự khác biệt nhỏ là trên Android, nó khuyên bạn nên sử dụng cài đặt miền địa phương, và unix_timestamp ban đầu của tôi chỉ mất vài giây, không phải mili giây và Eclipse muốn thêm khối try/catch hoặc throw exception. Vì vậy, mã làm việc của tôi cần phải được sửa đổi một chút như thế này:

/** 
* 
* @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(); 
} 

Và đây là mã gọi:

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")); 
Các vấn đề liên quan