142 votes

java convertir les millisecondes au format d'heure

Je suis en train de convertir une valeur de type long (Le nombre de millisecondes écoulées entre le 1/1/1970) à un moment de format h:m:s:ms
La valeur long-je utiliser comme un timestamp, je reçois le champ timestamp de la journalisation des événements de log4j.
Comment dois-je faire la conversion?
Par exemple, pour obtenir les minutes, j'ai essayé ce qui suit, et tout échec:
logEvent.horodatage/ (1000*60*60) et
TimeUnit.MILLISECONDES.toMinutes(logEvent.timeStamp)
mais je reçois des déchets:
Je reçois

1289375173771 for logEvent.timeStamp
358159  for logEvent.timeStamp/ (1000*60*60) 
21489586 for TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)

Comment puis-je convertir?

Merci

204voto

manolowar Points 1071

Essaye ça:

 Date date = new Date(logEvent.timeSTamp);
DateFormat formatter = new SimpleDateFormat("HH:mm:ss:SSS");
String dateFormatted = formatter.format(date);
 

147voto

Brajendra Pandey Points 763
long second = (millis / 1000) % 60;
long minute = (millis / (1000 * 60)) % 60;
long hour = (millis / (1000 * 60 * 60)) % 24;

String time = String.format("%02d:%02d:%02d:%d", hour, minute, second, millis);

41voto

Sean Patrick Floyd Points 109428

Je vais vous montrer deux façons de a) d'obtenir le champ des minutes, à partir d'une valeur de type long, b) l'imprimer en utilisant le format de Date que vous souhaitez. On utilise java.util.Calendrier, l'autre utilise Joda-Time.

java.util.La Date et l' .Calendrier

final long timestamp = new Date().getTime();

// with java.util.Date/Calendar api
final Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(timestamp);
// here's how to get the minutes
final int minutes = cal.get(Calendar.MINUTE);
// and here's how to get the String representation
final String timeString =
    new SimpleDateFormat("HH:mm:ss:SSS").format(cal.getTime());
System.out.println(minutes);
System.out.println(timeString);

Joda-Time

// with JodaTime 2.4
final DateTime dt = new DateTime(timestamp);
// here's how to get the minutes
final int minutes2 = dt.getMinuteOfHour();
// and here's how to get the String representation
final String timeString2 = dt.toString("HH:mm:ss:SSS");
System.out.println(minutes2);
System.out.println(timeString2);

Sortie:

24
09:24:10:254
24
09:24:10:254

22voto

YoCha Points 11

Il est possible d'utiliser apache commons (commons-lang3) et sa classe DurationFormatUtils.

 <dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-lang3</artifactId>
  <version>3.1</version>
</dependency>
 

Par exemple:

 String formattedDuration = DurationFormatUtils.formatDurationHMS(12313152);
// formattedDuration value is "3:25:13.152"
String otherFormattedDuration = DurationFormatUtils.formatDuration(12313152, DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN);
// otherFormattedDuration value is "P0000Y0M0DT3H25M13.152S"
 

J'espère que ça peut aider ...

8voto

Lo Ka Points 9
long second = TimeUnit.MILLISECONDS.toSeconds(millis);
long minute = TimeUnit.MILLISECONDS.toMinutes(millis);
long hour = TimeUnit.MILLISECONDS.toHours(millis);
millis -= TimeUnit.SECONDS.toMillis(second);
return String.format("%02d:%02d:%02d:%d", hour, minute, second, millis);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X