【问题标题】:Converting seconds to date time String将秒转换为日期时间字符串
【发布时间】:2011-07-11 20:54:47
【问题描述】:

我有几秒钟的时间,想把它转换成Day-Month-Year HH:MM
我试过跟随,但它给了我错误的价值。

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(seconds*1000);
String dateString = calendar.get(Calendar.DAY_OF_WEEK) + ", "+.......

上面的代码不能正常工作我在这里做错了什么。

例如如果seconds = 1299671538 然后它生成时间字符串为Friday, December 12, 1969 这是错误的它应该显示Wednesday, March 09, 2011

【问题讨论】:

  • 怎么回事?没有更多信息,人们无法帮助您
  • 您的秒值错误 - 它给出了正确的日期。
  • 我没听懂你,你试过运行这段代码吗?
  • 我运行了这个:System.out.println(new Date(1299671538*1000)); System.out.println(new Date().getTime());
  • 仍然没有得到你,我没有在我的代码中的任何地方使用Date,你建议我使用Date吗??

标签: android


【解决方案1】:

例如,如果秒 = 1299671538,那么它会生成时间字符串为 1969 年 12 月 12 日星期五,这是错误的,它应该显示 2011 年 3 月 9 日星期三

你有整数溢出。只需使用以下内容(注意 1000 常量后的“L”):

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(seconds*1000L);
String dateString = calendar.get(Calendar.DAY_OF_WEEK) + ", "+.......

或者更好的使用 SimpleDateFormat 类:

SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMMM d, yyyy HH:mm");
String dateString = formatter.format(new Date(seconds * 1000L));

这将为您的原始秒输入提供以下日期字符串: Wednesday, March 9, 2011 13:52

【讨论】:

    【解决方案2】:

    你需要使用

    Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
    

    而不是

    Calendar cal = Calendar.getInstance();
    

    因为秒的 UTC 时间取决于时区。

    【讨论】:

      【解决方案3】:

      在这种情况下你不需要日历,你可以简单地使用构造函数new Date(1000 * seconds)

      然后使用 SimpleDateFormat 创建一个 String 来显示它。

      有关使用 SimpleDateFormat 的完整说明,请转到 here

      不过,这个问题的答案是您需要使用长值而不是整数。

      new Date(1299674566000l)
      

      如果你不相信我,运行这个:

          int secondsInt = 1299674566;
          System.out.println(new Date(secondsInt *1000));
          long secondsLong = 1299674566;
          System.out.println(new Date(secondsLong *1000));
      

      【讨论】:

      • 你能给我一个例子吗,因为我无法弄清楚,如何将 Date 与 SimpleDateFormat 类一起使用。
      • 是的,我使用的是 Long vales 而不是 Int,但我的输出仍然不正确。
      【解决方案4】:

      我可以确认@Idolon 的回答工作正常,下面是简单的 sn-p...

      long created = 1300563523;
      SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.US);
      String dateString = formatter.format(new Date(created * 1000L));
      

      使用 SimpleDateFormat 是更好的方法,根据需要更改格式。

      【讨论】:

        【解决方案5】:

        它不能在没有日历的情况下工作,如下所示?没有运行这段代码,但猜它应该可以工作。

        CharSequence theDate = DateFormat.format("Day-Month-Year HH:MM", objDate);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-10-11
          • 1970-01-01
          • 2015-09-17
          • 2013-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-08-18
          相关资源
          最近更新 更多