2014-02-16 39 views
1

如何將毫秒轉換爲時間和日期字符串並按照用戶的預期正確格式化?通過語言環境將日期和時間轉換爲日期和時間以及格式

我做了以下內容:

((SimpleDateFormat)DateFormat.getDateInstance(DateFormat.DEFAULT,Locale.getDefault())).format(new Date(Long.parseLong(timeInMilliseconds))); 

這似乎是工作,但我只得到使用這種方法的日期。

編輯:

要clearify,我需要從系統的時間/日期模式在某種程度上給每個用戶自己的通用格式

現在,我和我的結合您的解決方案,它似乎喜歡我的工作期望。

private String getFormattedDateTimeString(Context context, String timeInMilliseconds) { 
    SimpleDateFormat dateInstance = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.getDefault()); 
    SimpleDateFormat timeInstance = (SimpleDateFormat) DateFormat.getTimeInstance(DateFormat.DEFAULT, Locale.getDefault()); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(Long.parseLong(timeInMilliseconds)); 
    String date = dateInstance.format(calendar.getTime()); 
    String time = timeInstance.format(calendar.getTime()); 
    return date + " " + time; 
} 

爲什麼地獄我會得到這個問題的提示???

+1

最好的解決方案,謝謝! –

回答

3

所有其他答案都缺少日期時間的字符串表示需要本地化的觀點。

喬達時間

Joda-Time 2.3庫使得這項工作更加容易。

Joda-Time利用java.util.Locale來確定日期時間字符串表示的正確格式。 DateTimeFormat類爲「樣式」模式提供了一個選項,用於生成DateTimeFormatter。您指定兩個字符樣式模式。第一個字符是日期樣式,第二個字符是時間樣式。指定一個字符爲'S'爲簡短風格,'M'爲中等,'L'爲長,'F'爲完整。通過指定樣式字符' - '可以省略日期或時間。

如果不指定一個區域,或時區,JVM的默認將被使用。

地點

要創建java.util.Locale,您需要:

示例代碼

// Simulate input. 
long millisecondsSinceEpoch = DateTime.now().getMillis(); 

// Proceed with a 'long' value in hand. 
DateTime dateTimeUtc = new DateTime(millisecondsSinceEpoch, DateTimeZone.UTC); 

DateTimeZone timeZone = DateTimeZone.forID("Asia/Riyadh"); 
DateTime dateTimeRiyadh = dateTimeUtc.withZone(timeZone); 

// 'ar' = Arabic, 'SA' = Saudi Arabia. 
java.util.Locale locale = new Locale("ar", "SA"); // (language code, country code); 
DateTimeFormatter formatter = DateTimeFormat.forStyle("FF").withLocale(locale).withZone(timeZone); 
String output = formatter.print(dateTimeUtc); 

轉儲到控制檯...

System.out.println("millisecondsSinceEpoch: " + millisecondsSinceEpoch); 
System.out.println("dateTimeUtc: " + dateTimeUtc); 
System.out.println("dateTimeRiyadh: " + dateTimeRiyadh); 
System.out.println("output: " + output); 

當運行...

millisecondsSinceEpoch: 1392583624765 
dateTimeUtc: 2014-02-16T20:47:04.765Z 
dateTimeRiyadh: 2014-02-16T23:47:04.765+03:00 
output: 16 فبراير, 2014 AST 11:47:04 م 
+0

謝謝,看起來很有前途。當我在家時,我會嘗試 –

0

使用此...

String dateFormat = "dd/MM/yyyy hh:mm:ss.SSS"; 

// Create a DateFormatter object for displaying date in specified format. 
DateFormat formatter = new SimpleDateFormat(dateFormat); 

// Create a calendar object that will convert the date and time value in milliseconds to date. 
Calendar calendar = Calendar.getInstance(); 
calendar.setTimeInMillis(milliSeconds); 

String formatedDate = formatter.format(calendar.getTime()); 
1

離開你的代碼是,只是改變:
相反

getDateInstance 

嘗試

getDateTimeInstance 

或者,你最好使用:

SimpleDateFormat fmt = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss"); 
String datetime = fmt.format(cal.getTimeInMillis()); 
0

試試這個

SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");// you can rearange it as you like 

cal.setTimeInMillis(timeInMilliseconds); //convert the time in milli to a date 

String date = format.format(cal.getTime());// here you get your time formated 
0

爲什麼地球上你想使用日曆對象????這只是浪費資源。

// Create a DateFormatter object for displaying date in specified format. 
DateFormat myDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); 

String formatedDate = myDateFormat.format(new Date(timeInMilliseconds)); 
相關問題