我想基於用戶區域設置顯示出生日期。在我的應用程序中,我的一個領域是出生日期,現在格式爲dd/mm/yyyy。因此,如果用戶更改其語言環境,則日期格式也應相應更改。任何指針或代碼示例都會幫助我克服這個問題。基於Android的用戶區域設置的日期格式
回答
您可以使用DateFormat類,該類根據用戶區域設置格式化日期。
例子:
String dateOfBirth = "26/02/1974";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = null;
try {
date = sdf.parse(dateOfBirth);
} catch (ParseException e) {
// handle exception here !
}
java.text.DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(context);
String s = dateFormat.format(date);
您可以使用不同的方法getLongDateFormat
,getMediumDateFormat
根據詳細程度,你想有。
要根據區域設置更改日期格式,下面的代碼工作對我說:
String dateOfBirth = "26/02/1974";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = null;
try {
date = sdf.parse(dateOfBirth);
} catch (ParseException e) {
// handle exception here !
}
String myString = DateFormat.getDateInstance(DateFormat.SHORT).format(date);
然後,當你改變了語言環境,日期格式將改變基於它。 有關日期模式的更多信息: http://docs.oracle.com/javase/tutorial/i18n/format/dateFormat.html
您提供的鏈接對我很有用。謝謝 –
也一樣!謝謝 ! –
Android的API提供簡單的方法來顯示本地化的日期格式。 以下代碼有效。
public class FileDateUtil {
public static String getModifiedDate(long modified) {
return getModifiedDate(Locale.getDefault(), modified);
}
public static String getModifiedDate(Locale locale, long modified) {
SimpleDateFormat dateFormat = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
dateFormat = new SimpleDateFormat(getDateFormat(locale));
} else {
dateFormat = new SimpleDateFormat("MMM/dd/yyyy hh:mm:ss aa");
}
return dateFormat.format(new Date(modified));
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public static String getDateFormat(Locale locale) {
return DateFormat.getBestDateTimePattern(locale, "MM/dd/yyyy hh:mm:ss aa");
}
}
您可以查看下面的代碼。
String koreaData = FileDateUtil.getModifiedDate(Locale.KOREA, System.currentTimeMillis());
String franceData = FileDateUtil.getModifiedDate(Locale.FRENCH, System.currentTimeMillis());
String defaultData = FileDateUtil.getModifiedDate(Locale.getDefault(), System.currentTimeMillis());
String result = "Korea : " + koreaData + System.getProperty("line.separator");
result += "France : " + franceData + System.getProperty("line.separator");
result += "Default : " + defaultData + System.getProperty("line.separator");
tv.setText(result);
就這麼簡單
對於日期+時間:
DateFormat format = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.SHORT, Locale.getDefault());
對於剛剛日期:
DateFormat format = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
只是爲了糾正複製粘貼錯誤:對於沒有時間的日期,調用getDateInstance(而不是getDateTimeInstance) – Lensflare
- 1. 基於用戶區域的iOS設置日期格式
- 2. 格式化JSON日期格式化的日期基於區域
- 3. 格式部分日期基於區域
- 4. Excel:如何應用基於使用c#的區域設置的日期格式?
- 5. 如何更改Windows用戶的區域設置/日期格式?
- 6. 刪除與用戶區域設置有關的日期格式
- 7. 日期格式和區域設置
- 8. 基於Android中的區域設置的地址格式
- 9. 關於區域設置的日期格式字符串
- 10. 如何根據用戶區域設置設置數字和日期的格式?
- 11. 關於當前區域設置的自定義Android日期格式化
- 12. 如何格式化日期區域設置 - 取決於angularjs?
- 13. 在Android中設置diiferent區域設置後的日期格式異常
- 14. 無法使用區域設置格式的日期管理
- 15. 來自區域設置的sql的日期格式
- 16. 如何根據用戶的偏好/區域設置格式化日期?
- 17. PHP5中的區域設置日期格式
- 18. 在JSP中格式化不支持的日期區域設置
- 19. 如何更改格式化日期的區域設置?
- 20. JavaScript的:獲取日期格式,從區域性設置
- 21. Java的Android的日期格式忽略修改的區域設置
- 22. 如何在春天配置基於區域日期格式的支持
- 23. Iphone基於電話號碼格式的區域設置
- 24. Datagridview日期時間格式不使用系統區域設置
- 25. 使用momentjs在特定區域設置日期格式
- 26. 根據設備區域設置格式化日期字符串
- 27. Android的Google日曆日期格式的區域行爲
- 28. 如何確定區域設置的日期格式是月/日還是日/月?
- 29. 基於日期的條件格式設置行
- 30. 如何根據區域設置格式化日期?
「日期格式的日期格式」 確實應該寫「java.text.DateFormat中日期格式」。有來自不同庫的不同版本的DateFormat。 – AndroidDev
查看源代碼,'android.text.format.DateFormat.getDateFormat(context)'只返回'java.text.DateFormat.getDateInstance(java.text.DateFormat.SHORT)'。實際上,甚至沒有使用'context'參數。我想我更喜歡直接使用'java.text.DateFormat.getDateInstance(DateFormat.SHORT)'。 –
我沒有字符串類型的輸入日期,我有日期作爲輸入 – user924