web-dev-qa-db-fra.com

Convertir des jours en millisecondes

Je veux créer une fonction qui convertira les jours en millisecondes. Le format de jours est stocké en tant que 0.2444, alors comment le convertir en millisecondes?

59
maas

La meilleure pratique pour cela, à mon avis, est:

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.
223
E_X

Outre les autres réponses, il existe également la classe TimeUnit qui vous permet de convertir une durée en une autre. Par exemple, pour savoir combien de millisecondes constituent un jour:

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

Notez que cette méthode prend un long, donc si vous avez une fraction de jour, vous devrez le multiplier par le nombre de millisecondes d'un jour.

104
dogbane

Ne veut pas days * 24 * 60 * 60 * 1000 suffisent?

17
Vlad

24 heures = 86400 secondes = 86400000 millisecondes. Il suffit de multiplier votre nombre avec 86400000.

10
Gaurav Gupta

Il est important de mentionner que, une fois tous les 4-5 ans, cette méthode peut donner une erreur d’une seconde, en raison d’un saut de seconde ( http://www.nist.gov/pml/div688/leapseconds.cfm =), et la formule correcte pour ce jour serait

(24*60*60 + 1) * 1000

Il y a une question Les secondes intercalaires sont-elles prises en compte par le calendrier? et la réponse est non.

Donc, si vous concevez un logiciel très dépendant du temps, soyez prudent avec cette formule.

9
Rustem Mustafin
public static double toMilliSeconds(double day)
{
    return day * 24 * 60 * 60 * 1000;
}

ou comme long:

public static long toMilliSeconds(double day)
{
    return (long) (day * 24 * 60 * 60 * 1000);
}
3
Eng.Fouad
int day = 5;
long dayInMilliseconds = day * org.Apache.commons.lang.time.DateUtils.MILLIS_PER_DAY
1
user11572247