我需要以用户的设备设置格式(带有文本“ at”)显示日期和时间。例如:
在美国设备上,可以是: 2018年11月2日,下午5:28:20
在印度: 2018年11月2日,17:28:20
俄语上: 2ноября2018в17:28:20
它应取决于用户设备的首选项和语言。还应该包含秒。在Google Play控制台上用户查看时,日期和时间应该看起来像这样。
您能帮忙实现它吗?
p.s。我将日期时间信息存储在sqlite中,如下所示:
String milliseconds = cursor.getString(cursor.getColumnIndex("datetime"));
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
date = format.parse(milliseconds);
//But how to format this date now?
//I found the following two functions:
Format dateFormat = android.text.format.DateFormat.getLongDateFormat(context);
Format timeFormat = android.text.format.DateFormat.getTimeFormat(context);
String finalDateTime = dateFormat.format(date) + " at " + timeFormat.format(date);
//But here time without seconds. How to add seconds?
}
此外,也许有更正确的方法从数据库中读取它?但这是第二件事。
答案 0 :(得分:0)
问题是您没有使用设备的语言环境格式化日期。从文档中使用:
public SimpleDateFormat (String pattern, Locale locale)
使用给定的语言环境和给定语言环境的默认日期格式符号来构造SimpleDateFormat。
是这样的:
SimpleDateFormat result = new SimpleDateFormat(pattern, locale);
format.setTimeZone(TimeZone.getDefault());
format.format(date);
Date date = new Date(milliseconds);
try {
Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
locale = Resources.getSystem().getConfiguration().getLocales().get(0);
} else {
locale = Resources.getSystem().getConfiguration().locale;
}
SimpleDateFormat format = new SimpleDateFormat("dd MMMM hh:mm:ss", locale);
String formatedDate = format.format(new Date());
}
如果要更改日期格式,请查看以下文档页面:https://developer.android.com/reference/java/text/SimpleDateFormat
答案 1 :(得分:0)
使用此:
Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
locale = Resources.getSystem().getConfiguration().getLocales().get(0);
} else {
locale = Resources.getSystem().getConfiguration().locale;
}
Calendar c = Calendar.getInstance();
SimpleDateFormat dateformat = new SimpleDateFormat("dd MMMM hh:mm:ss",locale);
String datetime = dateformat.format(c.getTime());
System.out.println("Date "+datetime);