【问题标题】:Inconsistent date time format for German locale德语语言环境的日期时间格式不一致
【发布时间】:2013-07-23 19:00:57
【问题描述】:

以下代码在 Android 和标准 jdk 中产生不同的输出

    final DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z",
    Locale.GERMAN);
    final String today = df.format(new Date());

输出:

安卓:Mi., 24 Jul 2013 12:33:12 +0200

标准jdk:Mi, 24 Jul 2013 12:33:12 +0200

在服务器端,它正在抛出解析异常,你知道吗?

【问题讨论】:

    标签: java android datetime


    【解决方案1】:

    我可以建议一个解决方法:

        SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z",
                Locale.GERMAN);
        DateFormatSymbols dfs = df.getDateFormatSymbols();
        String[] swd = {"", "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"};
        dfs.setShortWeekdays(swd);
        df.setDateFormatSymbols(dfs);
    

    现在它将日期格式化为

    Mi, 24 Jul 2013 12:33:12 +0200
    

    在标准 Java 和 Android 中

    【讨论】:

    • 这可能是我开发客户端(Android)时的解决方案。想象一下其他人也在使用服务器端 API。仅供参考,iOS 也产生与 Android 相同的输出。
    【解决方案2】:

    使用标准 UTC 日期时间格式。并非所有语言环境都受 JDK 支持。因此,在平台上交换数据时使用特别有用的 Locale.US 是安全的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-23
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 2021-09-26
      • 2023-04-03
      相关资源
      最近更新 更多