我正在尝试转换一个长值(
从1970年1月1日起经过的毫秒数,即纪元
)格式的时间
..。
我使用的long值作为时间戳,它是从字段中获取的
来自log4j的日志记录事件。
到目前为止,我已经尝试了以下方法,但失败了:
logEvent.timeStamp/ (1000*60*60)
TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)
但是我得到了不正确的值:
1289375173771 for logEvent.timeStamp
358159 for logEvent.timeStamp/ (1000*60*60)
21489586 for TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)
我该怎么做呢?
发布于 2010-11-10 16:12:06
试试这个:
Date date = new Date(logEvent.timeSTamp);
DateFormat formatter = new SimpleDateFormat("HH:mm:ss.SSS");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
String dateFormatted = formatter.format(date);
请参见
SimpleDateFormat
有关该类接受的其他格式字符串的说明,请参见。
请参见
可运行的示例
使用1200ms的输入。
发布于 2013-05-13 19:26:35
long millis = durationInMillis % 1000;
long second = (durationInMillis / 1000) % 60;
long minute = (durationInMillis / (1000 * 60)) % 60;
long hour = (durationInMillis / (1000 * 60 * 60)) % 24;
String time = String.format("%02d:%02d:%02d.%d", hour, minute, second, millis);
发布于 2010-11-10 16:16:04
我将向您展示三种方法:(a)从长值获取分钟字段,(b)使用您想要的日期格式打印它。一种用途
java.util.Calendar
,另一个用途
Joda-Time
,最后一个使用Java8和更高版本中内置的java.time框架。
java.time框架取代了旧的捆绑的date-time类,并受到Joda-Time的启发,由JSR310定义,并由ThreeTen-Extra项目扩展。
在使用Java8和更高版本时,java.time框架是最好的选择。否则,比如Android,使用Joda-Time。java.util.Date/.Calendar类是出了名的麻烦,应该避免。
java.util.Date和.Calendar
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);
输出:
24
09:24:10:254
24
09:24:10:254
java.time
long millisecondsSinceEpoch = 1289375173771L;
Instant instant = Instant.ofEpochMilli ( millisecondsSinceEpoch );
ZonedDateTime zdt = ZonedDateTime.ofInstant ( instant , ZoneOffset.UTC );
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "HH:mm:ss:SSS" );
String output = formatter.format ( zdt );
System.out.println ( "millisecondsSinceEpoch: " + millisecondsSinceEpoch + " instant: " + instant + " output: " + output );
millisecondsSinceEpoch: 2010年即时: 1289375173771 -11-10T07:46:13.771Z输出: 07:46:13:771
https://stackoverflow.com/questions/4142313
复制相似问题