【问题标题】:Formatting date and time as in "Settings - Date and time"格式化日期和时间,如“设置 - 日期和时间”
【发布时间】:2013-04-09 10:58:44
【问题描述】:

在 Android 中似乎有很多方法可以格式化日期和时间 - 但没有一种完全符合我的要求 ;-)

我能够找到的方法涉及区域设置(直接或间接) - 但正确的方法必须是使用用户在“设置 - 日期和时间”中配置的内容。

使用例如:

String res = java.text.DateFormat.getDateTimeInstance(java.text.DateFormat.SHORT, java.text.DateFormat.MEDIUM).format(date);
                Log.d("", res);

日志:2013 年 4 月 9 日下午 12:11:34

res = android.text.format.DateUtils.formatDateTime(getActivity(), date.getTime(), android.text.format.DateUtils.FORMAT_SHOW_TIME | android.text.format.DateUtils.FORMAT_SHOW_DATE  | android.text.format.DateUtils.FORMAT_SHOW_YEAR);
                Log.d("", res);

日志:2013 年 4 月 9 日 12:11

但这不是它的配置方式,当我查看文件的日期和时间时,它被写为:09/04/2013 12:11

那么我如何获得在“设置 - 日期和时间”中配置的格式字符串(如“yyyy-MM-dd”和“HH:mm”),或者如何获得根据这些规则格式化的日期?

【问题讨论】:

    标签: android datetime


    【解决方案1】:

    尝试使用以下代码:

    public static String convertDateToUserFormat(final Date inputDate) {
    if (inputDate != null) {
        return getDateFormat().format(inputDate);
    }
    
    return null;
    }
    
    private static DateFormat getDateFormat() {
        final String format = Settings.System.getString(context.getContentResolver(),
                Settings.System.DATE_FORMAT);
        if (TextUtils.isEmpty(format)) {
            return android.text.format.DateFormat
                    .getDateFormat(context);
        }
    
        return new SimpleDateFormat(format);
    }
    

    【讨论】:

      【解决方案2】:
      Format dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
      formattedDate = formatter.parse(yourDateString);
      

      有关 DateFormatter 的更多信息check out the developer doc

      【讨论】:

      • 据我了解,这将返回一个日期 - 我想走另一条路。
      【解决方案3】:

      这里是日期格式的例子

        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
        Date date = new Date();
      
        System.out.println("format 1 " + sdf.format(date));
      
        sdf.applyPattern("E MMM dd yyyy");
        System.out.println("format 2 " + sdf.format(date));
      

      您可以点击此链接了解更多信息enter link description here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-20
        • 2020-10-20
        • 2011-09-25
        • 2017-09-14
        相关资源
        最近更新 更多