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?
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.
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.
Ne veut pas days * 24 * 60 * 60 * 1000
suffisent?
24 heures = 86400 secondes = 86400000 millisecondes. Il suffit de multiplier votre nombre avec 86400000.
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.
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);
}
int day = 5;
long dayInMilliseconds = day * org.Apache.commons.lang.time.DateUtils.MILLIS_PER_DAY