获取当前时间的 Java 代码

我正在 java中搜索代码,以获取或同步我的本地 PC 系统时间到我的应用程序。

641727 次浏览

我不太明白你的意思,但你可能需要

Date d = new Date();

都有

new java.util.Date()

还有

System.currentTimeMillis()

会给你当前的系统时间。

如上所述,你可以使用

Date d = new Date();

或使用

Calendar.getInstance();

或者以米利斯为单位

System.currentTimeMillis()

要获取系统时间,请使用 Calendar.getInstance () . getTime ()

并且每次都应该获得 Calendar 的新实例以获得 目前时间。

从 Java 代码到 改变系统时可以使用命令行

可以使用 new Date () ,它会给出当前时间。

如果您需要以某种格式表示它(通常您需要这样做) ,那么使用格式化程序。

DateFormat df = DateFormat.getDateTimeInstance (DateFormat.MEDIUM, DateFormat.MEDIUM, new Locale ("en", "EN"));
String formattedDate = df.format (new Date ());

CurrentTimeMillis ()

其他所有东西都可以使用. . 比如 new Date ()调用 System.currentTimeMillis ()。

试试这个:

import java.text.SimpleDateFormat;
import java.util.Calendar;


public class currentTime {


public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println( sdf.format(cal.getTime()) );
}


}

你可以按照你喜欢的方式格式化 SimpleDateFormat:

SimpleDateFormat

日历

New Date () . getTime ()是 被窃听了

    Date date = new Date();
System.out.println(date);
System.out.println(date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds());
long t1 = date.getTime();
System.out.println((t1 / 1000 / 60 / 60) % 24 + ":" + (t1 / 1000 / 60) % 60 + ":" + (t1 / 1000) % 60);
long t2 = System.currentTimeMillis();
System.out.println((t2 / 1000 / 60 / 60) % 24 + ":" + (t2 / 1000 / 60) % 60 + ":" + (t2 / 1000) % 60);

它让我回到了错误的时间 Millis。还有 System.currentTimeMillis()。因为我要求日期 例子告诉我相应的时间毫米它必须返回匹配的,而不是其他人从不同的时区。有趣的是,不推荐的方法是唯一返回正确值的方法。

我知道这是个很老的问题,但我想澄清一下:

Date d = new Date()

推荐的方法是使用一个日历对象。例如:

Calendar cal = Calendar.getInstance();
Date currentTime = cal.getTime();

我希望这将有助于人们谁可以提出这个问题的未来。谢谢大家。

博士

Instant.now()  // UTC

或者..。

ZonedDateTime.now(
// Specify time zone.
ZoneId.of( "Pacific/Auckland" )
)

细节

众所周知,捆绑的 java.util.Date/.Calendar类是很麻烦的。避免使用它们。它们现在是遗留的,被 < strong > java.time 框架所取代。

相反,可以使用以下两种方式:

爪哇时间

ZonedDateTime zdt = ZonedDateTime.now();

如果需要旧代码,可以转换为 java.util。日期。通过在 Instant这是在 协调世界时的时间线上的一个时刻。

java.util.Date date = java.util.Date.from( zdt.toInstant() );

时区

最好显式地指定您的 期望的/预期的时区,而不是隐式地依赖于 JVM 的 当前默认时区

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.now( zoneId );  // Pass desired/expected time zone.

Table of date-time types in Java, both modern and legacy

Joda 时间

仅供参考,Joda 时间项目现在在 维修模式,团队建议迁移到 爪哇时间类。

DateTime now = DateTime.now();

要从 Joda-Time日期时间对象转换为与其他类进行交互操作的 java.util.Date..。

java.util.Date date = now.toDate();

在发布之前搜索 StackOverflow。您的问题已经被提出并得到了回答。


关于爪哇时间

爪哇时间框架内置于 Java8及更高版本中。这些类取代了令人讨厌的旧的 遗产日期时间类,如 java.util.DateCalendarSimpleDateFormat

现在在 维修模式中的 Joda 时间项目建议迁移到 爪哇时间类。

要了解更多,请参阅 Oracle 教程。并搜索堆栈溢出许多例子和解释。规范是 JSR 310

从哪里获得 java.time 类?

  • Java SE 8 < strong > JavaSE9 和更高版本
    • 内置的。
    • 带有捆绑实现的标准 JavaAPI 的一部分。
    • Java9添加了一些次要的特性和修复。
  • Java SE 6 和 < a href = “ https://en.wikipedia.org/wiki/Java _ version _ history # Java _ SE _ 7”rel = “ nofollow noReferrer”> < strong > Java SE 7
  • 仿生人
    • Java.time 类的 Android 捆绑包实现的后续版本。
    • 对于早期的 Android,项目适用于 310-后端口(上面提到过)。

Table of which java.time library to use with which version of Java or Android

< strong > Three Ten-Ultra 项目使用其他类扩展 java.time。这个项目是将来可能添加 java.time 的试验场。您可以在这里找到一些有用的类,比如 IntervalYearWeekYearQuarter更多

你也可以通过使用 getter 获取当前的小时、分钟和秒:

new Date(System.currentTimeMillis()).get....()

试试这种方法,效率更高,兼容:

SimpleDateFormat time_formatter = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss.SSS");
String current_time_str = time_formatter.format(System.currentTimeMillis());
//Log.i("test", "current_time_str:" + current_time_str);

只是为了告知进一步的开发者,感谢巴兹尔布尔克,我只是想添加我的石头到这个主题。

如果您只想获得 HH: MM: SS 格式,那么可以这样做:

LocalTime hour = ZonedDateTime.now().toLocalTime().truncatedTo(ChronoUnit.SECONDS);

干杯。

附注: 这至少只能在 Java8中使用!

试试这个:

final String currentTime    = String.valueOf(System.currentTimeMillis());