如何将System.currentTimeMillis转换为时间格式? (HH:MM:SS)

时间:2019-05-06 14:22:11

标签: java android

我正在尝试将System.currentTimeMillis转换为(hh:mm:ss)的当前时间格式。到目前为止,这是我尝试过的方法,但操作不正确。

    Long currentTime = System.currentTimeMillis();

    int hours;
    int minutes;
    int seconds;

    String getSecToStr = currentTime.toString();
    String getTimeStr = getSecToStr.substring(8,13);

    seconds = Integer.parseInt(getTimeStr);

    minutes = seconds / 60;
    seconds -= minutes * 60;

    hours = minutes / 60;
    minutes -= hours * 60;

    String myResult = Integer.toString(hours) + ":" + Integer.toString(minutes) + ":" + Integer.toString(seconds);

    System.out.println("Current Time Is: " + myResult);

有什么想法吗?非常感谢!

3 个答案:

答案 0 :(得分:3)

您可以使用一些对象来简化操作,例如SimpleDateFormatDate

首先准备工厂时间:

Long currentTime = System.currentTimeMillis();

使用SimpleDateFormat选择所需的格式:

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm:ss");

创建日期对象:

Date date = new Date(currentTime);

将该格式应用于您的日期对象:

String time = simpleDateFormat.format(date);

登录:

Log.d(TAG, "onCreate: " + time);

结果:

17:05:73

答案 1 :(得分:0)

tl; dr

不需要System.currentTimeMillis();。使用 java.time 类。

LocalTime.now( 
    ZoneId.of( "America/Montreal" )
)
.truncatedTo( 
    ChronoUnit.SECONDS
)
.toString()
  

12:34:56

java.time

现代方法使用 java.time 类。永远不要使用可怕的DateCalendar类。

要获取当前时间,需要一个时区。对于任何给定时刻,一天中的时间(和日期)在全球范围内都不同。

ZoneId z = ZoneId.of( "Australia/Sydney" ) ;

捕获当天的当前时间,该时间是该特定地区(该时区)的人们使用的挂钟时间。获取一个LocalTime对象。

LocalTime lt = LocalTime.now( z ) ;

如果要使用UTC而不是特定的区域,请传递ZoneOffset.UTC常量。

很显然,您要跟踪whole second的时间。因此,lop off是小数秒。

LocalTime lt = LocalTime.now( z ).truncatedTo( ChronoUnit.SECONDS ) ;

通过调用toString生成标准ISO 8601格式的文本。

String output = lt.toString() ;

答案 2 :(得分:0)

以下等效于日期格式HH:mm:ss

String.format("%1$TH:%1$TM:%1$TS", System.currentTimeMillis())