我正在java
中搜索代码,以便将本地PC系统时间提取或同步到我的应用程序中。
答案 0 :(得分:157)
试试这个:
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中查看的任何其他信息:
答案 1 :(得分:139)
两个
new java.util.Date()
和
System.currentTimeMillis()
会给你当前的系统时间。
答案 2 :(得分:45)
Instant.now() // UTC
...或...
ZonedDateTime.now(
// Specify time zone.
ZoneId.of( "Pacific/Auckland" )
)
捆绑的java.util.Date
/ .Calendar
类非常麻烦。避免他们。它们现在已经遗留下来,取而代之的是java.time框架。
相反,请使用:
ZonedDateTime zdt = ZonedDateTime.now();
如果旧代码需要,请转换为java.util.Date。点击Instant
上UTC的时间轴上的desired/expected time zone。
java.util.Date date = java.util.Date.from( zdt.toInstant() );
最好明确指定current default time zone,而不是隐式依赖JVM的Joda-Time。
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.now( zoneId ); // Pass desired/expected time zone.
仅供参考,maintenance mode项目现在位于java.time,团队建议迁移到DateTime课程。
DateTime now = DateTime.now();
从Joda-Time java.time对象转换为java.util.Date,以便与其他类进行交互...
java.util.Date date = now.toDate();
发布前搜索StackOverflow。您的问题已经被问及并得到了解答。
legacy框架内置于Java 8及更高版本中。这些类取代了麻烦的旧java.util.Date
日期时间类,例如Calendar
,SimpleDateFormat
和& Joda-Time
现在位于maintenance mode的java.time项目建议迁移到Oracle Tutorial类。
要了解详情,请参阅JSR 310。并搜索Stack Overflow以获取许多示例和解释。规范是Java SE 8。
从哪里获取java.time类?
Interval
项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如YearWeek
,YearQuarter
,more和{{3}}。
答案 3 :(得分:10)
System.currentTimeMillis的()
其他一切都可以解决..例如,new Date()调用System.currentTimeMillis()。
答案 4 :(得分:8)
尝试这种方式,更高效,兼容:
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);
答案 5 :(得分:7)
只是为了告知更进一步的开发人员,谢天谢地,罗伯特布尔克,我只想在这个主题上添加我的石头。
如果您只想获得HH:MM:SS格式,请执行以下操作:
LocalTime hour = ZonedDateTime.now().toLocalTime().truncatedTo(ChronoUnit.SECONDS);
干杯。
P.S。:这至少只适用于Java 8!
答案 6 :(得分:5)
如上所述,您可以使用
Date d = new Date();
或使用
Calendar.getInstance();
或者如果你想要它在millis
System.currentTimeMillis()
答案 7 :(得分:4)
不确定你的意思,但你可能只需要
Date d = new Date();
答案 8 :(得分:3)
你可以使用新的Date(),它会给你当前的时间。
如果您需要以某种格式表示(通常需要这样做),请使用格式化程序。
DateFormat df = DateFormat.getDateTimeInstance (DateFormat.MEDIUM, DateFormat.MEDIUM, new Locale ("en", "EN"));
String formattedDate = df.format (new Date ());
答案 9 :(得分:3)
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);
它给了我错误的时间毫秒。 System.currentTimeMillis()
也是。由于我要求日期实例告诉我相应的时间毫秒,它必须返回匹配的而不是来自不同时区的其他时间。有趣的是,弃用的方法是唯一能够返回正确值的方法。
答案 10 :(得分:2)
要获取系统时间,请使用Calendar.getInstance()。getTime()
每次都应该获得当前时间的新日历实例。
要从java代码更改系统时间,您可以使用命令行
答案 11 :(得分:1)
我知道这是一个很老的问题。但是想澄清一下:
Date d = new Date()
在当前版本的Java中被删除。建议的方法是使用日历对象。例如:
Calendar cal = Calendar.getInstance();
Date currentTime = cal.getTime();
我希望这将有助于将来可能会提到这个问题的人。谢谢大家。
答案 12 :(得分:1)
尝试此操作以获取当前日期。您还可以使用getter获取当前小时,分钟和秒:
new Date(System.currentTimeMillis()).get....()