如何将 System.currentTimeMillis 转换为时间格式?(时:分:秒)

cry*_*der 7 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);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?非常感激!

Moh*_*adL 9

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

首先准备磨坊的时间:

Long currentTime = System.currentTimeMillis();
Run Code Online (Sandbox Code Playgroud)

选择您的desier格式SimpleDateFormat

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm:ss");
Run Code Online (Sandbox Code Playgroud)

创建您的日期对象:

Date date = new Date(currentTime);
Run Code Online (Sandbox Code Playgroud)

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

String time = simpleDateFormat.format(date);
Run Code Online (Sandbox Code Playgroud)

记录一下:

Log.d(TAG, "onCreate: " + time);
Run Code Online (Sandbox Code Playgroud)

结果:

17:05:73
Run Code Online (Sandbox Code Playgroud)

  • 使用 `hh:mm:ss` 或 `HH:mm:ss` 代替 `HH:MM:SS`。MM 是月份,SS 是毫秒的一部分。hh 是 12 小时格式,HH 是 24 小时格式。05 是可能的,你不能在一分钟内有 73 秒 (2认同)

Bas*_*que 6

太长了;博士

\n\n

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

\n\n
LocalTime.now( \n    ZoneId.of( "America/Montreal" )\n)\n.truncatedTo( \n    ChronoUnit.SECONDS\n)\n.toString()\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

12:34:56

\n
\n\n

java.time

\n\n

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

\n\n

要获取当前时间需要时区。对于任何给定时刻,全球各地的时间(和日期)都会因区域而异。

\n\n
ZoneId z = ZoneId.of( "Australia/Sydney" ) ;\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
LocalTime lt = LocalTime.now( z ) ;\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

显然你想跟踪一天中的时间到整秒。所以让\xe2\x80\x99s去掉小数秒。

\n\n
LocalTime lt = LocalTime.now( z ).truncatedTo( ChronoUnit.SECONDS ) ;\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
String output = lt.toString() ;\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

关于java.time

\n\n

java.time框架内置于 Java 8 及更高版本中这些类取代了麻烦的旧遗留日期时间类,例如java.util.Date, Calendar, & SimpleDateFormat

\n\n

Joda -Time项目现在处于维护模式,建议迁移到java.time类。

\n\n

要了解更多信息,请参阅Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310

\n\n

您可以直接与数据库交换java.time对象。使用与JDBC 4.2或更高版本兼容的JDBC 驱动程序。不需要字符串,不需要类。java.sql.*

\n\n

从哪里获取 java.time 类?

\n\n\n\n

在此输入图像描述

\n


归档时间:

查看次数:

12405 次

最近记录:

5 年,3 月 前