获取当前时间的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());