首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将以毫秒为单位的时间戳转换为Java中的字符串格式的时间

将以毫秒为单位的时间戳转换为Java中的字符串格式的时间
EN

Stack Overflow用户
提问于 2010-11-10 15:57:55
回答 9查看 331.4K关注 0票数 139

我正在尝试转换一个长值(

从1970年1月1日起经过的毫秒数,即纪元

)格式的时间

..。

我使用的long值作为时间戳,它是从字段中获取的

来自log4j的日志记录事件。

到目前为止,我已经尝试了以下方法,但失败了:

代码语言:javascript
复制
logEvent.timeStamp/ (1000*60*60)
TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)

但是我得到了不正确的值:

代码语言:javascript
复制
1289375173771 for logEvent.timeStamp
358159  for logEvent.timeStamp/ (1000*60*60) 
21489586 for TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)

我该怎么做呢?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-11-10 16:12:06

试试这个:

代码语言:javascript
复制
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的输入。

票数 197
EN

Stack Overflow用户

发布于 2013-05-13 19:26:35

代码语言:javascript
复制
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);
票数 145
EN

Stack Overflow用户

发布于 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

代码语言:javascript
复制
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

代码语言:javascript
复制
// 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

代码语言:javascript
复制
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

票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4142313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档