Java code for getting current time
我正在
试试这个:
1 2 3 4 5 6 7 8 9 10 11 12 | 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
日历
都
和
会给你当前的系统时间。
TL;博士
1 | Instant.now() // UTC |
…要么…
1 2 3 4 | ZonedDateTime.now( // Specify time zone. ZoneId.of("Pacific/Auckland" ) ) |
细节
捆绑的
相反,使用:
-
java.time
内置Java 8及更高版本。 Joda-Time的官方继任者。
支持Java 6& 7和Android。 -
Joda-Time
第三方库,开源,免费。
java.time
1 | ZonedDateTime zdt = ZonedDateTime.now(); |
如果需要旧代码,请转换为java.util.Date。在
时区
最好明确指定所需/预期的时区,而不是隐式依赖JVM的当前默认时区。
1 2 | ZoneId zoneId = ZoneId.of("America/Montreal" ); ZonedDateTime zdt = ZonedDateTime.now( zoneId ); // Pass desired/expected time zone. |
乔达时间
仅供参考,Joda-Time项目现在处于维护模式,团队建议迁移到java.time类。
1 | DateTime now = DateTime.now(); |
要从Joda-Time DateTime对象转换为java.util.Date以与其他类进行交互...
1 |
在发布之前搜索StackOverflow。您的问题已经被问及并回答了。
关于java.time
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧遗留日期时间类,例如
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
要了解更多信息,请参阅Oracle教程。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
-
Java SE 8,Java SE 9及更高版本
- 内置。
- 带有捆绑实现的标准Java API的一部分。
- Java 9增加了一些小功能和修复。
-
Java SE 6和Java SE 7
- 许多java.time功能都被反向移植到Java 6& 7在ThreeTen-Backport。
-
Android的
- 更高版本的Android捆绑java.time类的实现。
- 对于早期的Android,ThreeTenABP项目采用ThreeTen-Backport(如上所述)。请参见如何使用ThreeTenABP ....
ThreeTen-Extra项目使用其他类扩展了java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的类,例如
System.currentTimeMillis的()
其他一切都可以解决..例如new Date()调用System.currentTimeMillis()。
尝试这种方式,更高效和兼容:
1 2 3 | 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格式,请执行以下操作:
1 | LocalTime hour = ZonedDateTime.now().toLocalTime().truncatedTo(ChronoUnit.SECONDS); |
干杯。
P.S。:这至少只适用于Java 8!
如上所述,你可以使用
或使用
1 |
或者如果你想要毫克
1 |
试试这个:
不太确定你的意思,但你可能只需要
新的Date()。getTime()被窃听。
1 2 3 4 5 6 7 | 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); |
它给我带来了错误的时间毫秒。
你可以使用新的Date(),它会给你当前的时间。
如果您需要以某种格式表示它(通常需要这样做),那么请使用格式化程序。
1 2 | DateFormat df = DateFormat.getDateTimeInstance (DateFormat.MEDIUM, DateFormat.MEDIUM, new Locale ("en","EN")); String formattedDate = df.format (new Date ()); |
要获得系统时间,请使用Calendar.getInstance()。getTime()
而且每次都应该获得Calendar的新实例以获得当前时间。
要从java代码更改系统时间,可以使用命令行
尝试这个来获取当前日期。您还可以使用getter获取当前的小时,分钟和秒:
我知道这是一个很老的问题。但是想澄清一下:
在当前版本的Java中被删除。建议的方法是使用日历对象。例如:
我希望这将有助于将来可能提出这个问题的人。谢谢你们。