以用户的设备格式和语言显示日期和时间

时间:2018-11-02 15:37:59

标签: java android datetime format simpledateformat

我需要以用户的设备设置格式(带有文本“ 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?
}

此外,也许有更正确的方法从数据库中读取它?但这是第二件事。

2 个答案:

答案 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);