【问题标题】:Convert from days to milliseconds从天转换为毫秒
【发布时间】:2011-08-08 09:53:13
【问题描述】:

我想创建一个将天数转换为毫秒的函数。天的格式存储为0.2444,那么如何将其转换为毫秒?

【问题讨论】:

  • 一天有几个小时?一小时有多少分钟?一分钟有多少秒?一秒钟有多少毫秒?
  • 0.2444 是什么意思?
  • @Jigar Joshi 这可能意味着一天 0.2444 天,也就是 24.44% 或 5.86 小时。
  • 哦,别忘了有些日子是 25 小时,有些是 23 小时,有些甚至是 23 小时 59 分 59 秒(闰秒)。
  • @giraff - 将特定日期的一小部分转换为毫秒的函数必须采用两个参数或一个隐式参数(如“今天”)。我很难相信这是 OP 的应用程序真正需要的。 (例如,没有人会要求用户在考虑特定日期的小时数的情况下将一天的一小部分输入时间表。现在我们不知道这就是OP的应用程序是什么,但是...)

标签: java datetime-conversion


【解决方案1】:

在我看来,最好的做法是:

TimeUnit.DAYS.toMillis(1);     // 1 day to milliseconds.
TimeUnit.MINUTES.toMillis(23); // 23 minutes to milliseconds.
TimeUnit.HOURS.toMillis(4);    // 4 hours to milliseconds.
TimeUnit.SECONDS.toMillis(96); // 96 seconds to milliseconds.

【讨论】:

  • 不,这不应该被接受的答案,因为 DAYS.toMillis 只需要很长的参数,而 OP 有双倍的天数
  • 这个答案是大多数来这里的人都在寻找的答案,但不是OP的答案
【解决方案2】:

除了其他答案之外,还有TimeUnit 类允许您将一个持续时间转换为另一个持续时间。例如,要找出一天有多少毫秒:

TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS); //gives 86400000

请注意,此方法采用 long,因此如果您有一天的一小部分,则必须将其乘以一天中的毫秒数。

【讨论】:

    【解决方案3】:

    days * 24 * 60 * 60 * 1000 不够吗?

    【讨论】:

    • 他可能想要它作为一个长的,所以你可能需要在最后从一个双圆它。
    【解决方案4】:

    值得一提的是,这种方法每 4 到 5 年可能会出现 1 秒的错误,因为闰秒 (http://www.nist.gov/pml/div688/leapseconds.cfm),当天的正确公式是

    (24*60*60 + 1) * 1000
    

    有一个问题Are leap seconds catered for by Calendar?,答案是否定的。

    所以,如果您正在设计超级时间相关的软件,请注意这个公式。

    【讨论】:

    • 只要有人感兴趣——2016 年将会是闰秒
    【解决方案5】:

    24 小时 = 86400 秒 = 86400000 毫秒。只需将您的数字乘以 86400000。

    【讨论】:

      【解决方案6】:
      public static double toMilliSeconds(double day)
      {
          return day * 24 * 60 * 60 * 1000;
      }
      

      long:

      public static long toMilliSeconds(double day)
      {
          return (long) (day * 24 * 60 * 60 * 1000);
      }
      

      【讨论】:

        【解决方案7】:

        你可以使用这个实用类-

        public class DateUtils
        {
            public static final long SECOND_IN_MILLIS = 1000;
            public static final long MINUTE_IN_MILLIS = SECOND_IN_MILLIS * 60;
            public static final long HOUR_IN_MILLIS = MINUTE_IN_MILLIS * 60;
            public static final long DAY_IN_MILLIS = HOUR_IN_MILLIS * 24;
            public static final long WEEK_IN_MILLIS = DAY_IN_MILLIS * 7;
        }
        

        如果您正在开发 Android 框架,那么只需 import(也称为 DateUtilspackage android.text.format

        【讨论】:

          【解决方案8】:
          int day = 5;
          long dayInMilliseconds = day * org.apache.commons.lang.time.DateUtils.MILLIS_PER_DAY
          

          【讨论】:

          • 最好解释一下您的答案的含义。请花几分钟时间来说明这段代码是如何工作的
          猜你喜欢
          • 1970-01-01
          • 2012-09-27
          • 2020-07-23
          • 2018-11-05
          • 1970-01-01
          • 2013-07-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多