从天转换为毫秒


75

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


10
一天几个小时?一小时多少分钟?一分钟多少秒?一秒多少毫秒?
Rup

1
0.2444它代表什么?
jmj 2011年

@Jigar Joshi它可能表示一天的0.2444,即24.44%或5.86小时。
Daniel Ryan

6
哦,别忘了有些日子是25h,23h,甚至23h59min59sec(ap秒)。
giraff 2011年

1
@giraff-将特定日期的一小部分转换为毫秒的函数必须采用两个参数或一个隐式参数(例如“ today”)。我很难相信这是OP的应用程序真正需要的。(例如,考虑到特定日期的小时数,没有人会要求用户在时间表中输入一天的一小部分。现在我们不知道这是OP的应用程序,而是。 ..)
Stephen C

Answers:


268

我认为,最佳做法是:

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.

8
不,这不应该是公认的答案,因为DAYS.toMillis只需要长期争论和OP有天双
卢博米尔

这个答案是大多数来这里的人都在寻找的答案,而不是OP的答案
OsaSoft

117

除了其他答案,还有TimeUnit类,该类使您可以将一个持续时间转换为另一个持续时间。例如,要找出一天构成了几毫秒:

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

请注意,此方法使用long,因此,如果您一天的时间少于一整天,则必须将其乘以一天中的毫秒数。


20

会不会days * 24 * 60 * 60 * 1000不够的?


2
他可能想要很长的时间,因此您可能还需要从结尾处的两倍取整。
Rup



3
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);
}

1
int day = 5;
long dayInMilliseconds = day * org.apache.commons.lang.time.DateUtils.MILLIS_PER_DAY

1
总是最好解释一下您的答案是什么意思。请花几分钟来说明此代码的工作原理
DaFois,

1

您可以使用此实用程序类-

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(也称为DateUtils放在package android.text.format

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.