【问题标题】:Android: Getting the current date and timeAndroid:获取当前日期和时间
【发布时间】:2014-01-26 05:19:21
【问题描述】:

我正在尝试使用以下代码获取今天的日期和时间,

SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy HH:mm");
String currentDateandTime = sdf.format(new Date());

但结果是

26/15/2014 13:15 而不是 26/1/2014 13:15

怎么了?

谢谢!

【问题讨论】:

  • 日期格式错误..(第一次出现mm)请参考文档..

标签: android date calendar


【解决方案1】:

将第一个 mm 替换为 MM。在http://developer.android.com/reference/java/text/SimpleDateFormat.html查看文档

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
String currentDateandTime = sdf.format(new Date());

【讨论】:

    【解决方案2】:

    替换 dd/mm/yyyy

    由 dd/MM/yyyy

    月份的大写 M 小 m 代表分钟

    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
    String currentDateandTime = sdf.format(new Date());
    

    【讨论】:

      【解决方案3】:

      你的格式错误"dd/mm/yyyy HH:mm"应该是"dd/MM/yyyy HH:mm",注意MM

      DateFormat代替SimpleDateFormat

      因为SimpleDateFormat虽然已经贬值了

      android.text.format.DateFormat dateFormat= new android.text.format.DateFormat();
      dateFormat.format("dd/MM/yyyy HH:mm", new java.util.Date());
      

      【讨论】:

      • 非常感谢反对者解释原因
      • 在 Api 参考中没有提到 SimpleDateFormat 已折旧。 developer.android.com/reference/java/text/SimpleDateFormat.html
      • 你有没有开发过一个应用程序并使用过它?我有 11 个使用这种格式的特定项目,我现在改为这种格式
      • 这背后的原因是 SimpleDateFormat 不是线程安全的
      【解决方案4】:

      你应该使用正确的格式

      H 小时 米分钟 秒 秒的 S 分数 上午/下午标记 d 月中的一天 一年中的 M 月 年 一年中的第几周

       String[] formats = new String[] {
         "yyyy-MM-dd",
         "yyyy-MM-dd HH:mm",
         "yyyy-MM-dd HH:mmZ",
         "yyyy-MM-dd HH:mm:ss.SSSZ",
         "yyyy-MM-dd'T'HH:mm:ss.SSSZ",
       };
       for (String format : formats) {
         SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.US);
         System.out.format("%30s %s\n", format, sdf.format(new Date(0)));
         sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
         System.out.format("%30s %s\n", format, sdf.format(new Date(0)));
       }
      

      输出是

                       yyyy-MM-dd 1969-12-31
                       yyyy-MM-dd 1970-01-01
                 yyyy-MM-dd HH:mm 1969-12-31 16:00
                 yyyy-MM-dd HH:mm 1970-01-01 00:00
                yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800
                yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000
         yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800
         yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000
       yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800
       yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000
      

      在 America/Los_Angeles 时区运行时会产生上述输出:

      here了解更多

      【讨论】:

        【解决方案5】:

        【讨论】:

          猜你喜欢
          • 2018-09-26
          • 2012-12-04
          • 1970-01-01
          • 2015-01-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-22
          相关资源
          最近更新 更多