本问题已经有最佳答案,请猛点这里访问。
我正在java中搜索代码,以便将我的本地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
日历
无需调用cal.getTime()方法2次,它可能在格式化日期之后被赋值为字符串....... SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); String loginTime = sdf.format(cal.getTime());
仅供参考,这里使用的麻烦类现在已经遗留下来,取而代之的是java.time类。
对于懒惰(oneliner,没有导入,只需复制粘贴它):new java.text.SimpleDateFormat("HH:mm:ss").format(java.util.Calendar.getInstance().getTime())
都
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的官方继任者。
支持Java 6& 7和Android。
Joda-Time
第三方库,开源,免费。
java.time
ZonedDateTime zdt = ZonedDateTime.now();
如果需要旧代码,请转换为java.util.Date。在Instant处进行,这是UTC时间轴上的一个时刻。
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.
乔达时间
仅供参考,Joda-Time项目现在处于维护模式,团队建议迁移到java.time类。
DateTime now = DateTime.now();
要从Joda-Time DateTime对象转换为java.util.Date以与其他类进行交互...
java.util.Date date = now.toDate();
在发布之前搜索StackOverflow。您的问题已经被问及并回答了。
关于java.time
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧遗留日期时间类,例如java.util.Date,Calendar和& SimpleDateFormat。
现在处于维护模式的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的试验场。您可以在此处找到一些有用的类,例如Interval,YearWeek,YearQuarter等。
09年5月7日之前,他的问题也得到了多次回答?
@skiwi(a)实际上,是的。这里。这里。 (b)但是,我没有注意到问题的年龄。
System.currentTimeMillis的()
其他一切都可以解决..例如new Date()调用System.currentTimeMillis()。
尝试这种方式,更高效和兼容:
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);
干杯。
P.S。:这至少只适用于Java 8!
如上所述,你可以使用
Date d = new Date();
或使用
Calendar.getInstance();
或者如果你想要毫克
System.currentTimeMillis()
试试这个:
final String currentTime = String.valueOf(System.currentTimeMillis());
不太确定你的意思,但你可能只需要
Date d = 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);
它给我带来了错误的时间毫秒。 System.currentTimeMillis()也是。因为我要求Date实例告诉我相应的时间毫秒,它必须返回匹配的而不是来自不同时区的其他时间。有趣的是,弃用的方法是唯一返回正确值的方法。
我非常非常怀疑你对错误的主张。当然,除非您的系统时钟设置不正确。
你可以使用新的Date(),它会给你当前的时间。
如果您需要以某种格式表示它(通常需要这样做),那么请使用格式化程序。
DateFormat df = DateFormat.getDateTimeInstance (DateFormat.MEDIUM, DateFormat.MEDIUM, new Locale ("en","EN"));
String formattedDate = df.format (new Date ());
要获得系统时间,请使用Calendar.getInstance()。getTime()
而且每次都应该获得Calendar的新实例以获得当前时间。
要从java代码更改系统时间,可以使用命令行
尝试这个来获取当前日期。您还可以使用getter获取当前的小时,分钟和秒:
new Date(System.currentTimeMillis()).get....()
我知道这是一个很老的问题。但是想澄清一下:
在当前版本的Java中被删除。建议的方法是使用日历对象。例如:
Calendar cal = Calendar.getInstance();
Date currentTime = cal.getTime();
我希望这将有助于将来可能提出这个问题的人。谢谢你们。
排名最高的答案已经有了日历版本。你的帖子究竟添加了什么?
是。但所有其他答案都谈到了被剥夺的构造函数。刚补充说明。谢谢。
不正确:不推荐使用Date()构造函数(从Java 8开始)。不推荐使用该类的其他方法,但不推荐使用该方法。实际上,您应该考虑将其弃用,而是使用Joda-Time或Java 8中的新java.time包。