获取当前时间的Java代码

我正在searchjava代码来获取或同步我的本地PC系统时间到我的应用程序。

尝试这个:

 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。 对于任何额外的信息,你可以看看java api:

的SimpleDateFormat

日历

new java.util.Date()

System.currentTimeMillis()

会给你当前的系统时间。

TL;博士

 Instant.now() // UTC 

…要么…

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

细节

捆绑的java.util.Date / .Calendar类是非常麻烦的。 避免他们。 他们现在是遗留的,由java.time框架取代。

相反,使用以下任一:

  • java.time
    内置Java 8及更高版本。 Joda-Time的官方接class人。
    被移植到Java 6&7和Android 。
  • 乔达时间
    第三方库,开源,免费。

java.time

 ZonedDateTime zdt = ZonedDateTime.now(); 

如果需要旧代码,请转换为java.util.Date。 在UTC时间线上的瞬间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. 

乔达时间

 DateTime now = DateTime.now(); 

将Joda-Time DateTime对象转换为与其他类互操作的java.util.Date …

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

searchStackOverflow。 你的问题已经被问及多次回答。

System.currentTimeMillis的()

所有其他的工作。例如新的date()调用System.currentTimeMillis()。

就像上面说的,你可以使用

 Date d = new Date(); 

或使用

 Calendar.getInstance(); 

或者如果你想在毫秒

 System.currentTimeMillis() 

不确定你的意思,但你可能只是需要

 Date d = new Date(); 

你可以使用新的Date(),它会给你当前的时间。

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

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

新的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 实例告诉我相应的时间毫秒,它必须从不同的时区返回匹配的时间。 有趣的是,不赞成使用的方法是唯一返回正确值的方法。

试试这样,更高效和兼容

 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); 

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

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

要从Java代码更改系统时间,您可以使用命令行

只是为了让更多的开发人员知道,并且感谢Basil Bourque,我只是想为这个话题添砖加瓦。

如果你只是想得到HH:MM:SS格式,那么这样做:

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

干杯。

PS:这只会在Java 8中起作用!

我知道这是一个相当古老的问题。 但是想澄清一下:

 Date d = new Date() 

在当前版本的Java中被描述。 推荐的方法是使用日历对象。 例如:

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

我希望这将有助于将来可能提及这个问题的人。 谢谢你们。

试试这个来得到当前的date。你也可以通过使用getters获得当前的小时,分​​钟和秒钟:

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

尝试这个:

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