我想基于用户区域设置显示出生日期。在我的应用程序中,我的一个领域是出生日期,现在格式为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