我正在 java中搜索代码,以获取或同步我的本地 PC 系统时间到我的应用程序。
java
我不太明白你的意思,但你可能需要
Date d = new Date();
都有
new java.util.Date()
还有
System.currentTimeMillis()
会给你当前的系统时间。
如上所述,你可以使用
或使用
Calendar.getInstance();
或者以米利斯为单位
要获取系统时间,请使用 Calendar.getInstance () . getTime ()
并且每次都应该获得 Calendar 的新实例以获得 目前时间。
从 Java 代码到 改变系统时可以使用命令行
可以使用 new Date () ,它会给出当前时间。
如果您需要以某种格式表示它(通常您需要这样做) ,那么使用格式化程序。
DateFormat df = DateFormat.getDateTimeInstance (DateFormat.MEDIUM, DateFormat.MEDIUM, new Locale ("en", "EN")); String formattedDate = df.format (new Date ());
CurrentTimeMillis ()
其他所有东西都可以使用. . 比如 new Date ()调用 System.currentTimeMillis ()。
试试这个:
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:
SimpleDateFormat
日历
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);
它让我回到了错误的时间 Millis。还有 System.currentTimeMillis()。因为我要求日期 例子告诉我相应的时间毫米它必须返回匹配的,而不是其他人从不同的时区。有趣的是,不推荐的方法是唯一返回正确值的方法。
我知道这是个很老的问题,但我想澄清一下:
Date d = new Date()
推荐的方法是使用一个日历对象。例如:
Calendar cal = Calendar.getInstance(); Date currentTime = cal.getTime();
我希望这将有助于人们谁可以提出这个问题的未来。谢谢大家。
Instant.now() // UTC
或者..。
ZonedDateTime.now( // Specify time zone. ZoneId.of( "Pacific/Auckland" ) )
众所周知,捆绑的 java.util.Date/.Calendar类是很麻烦的。避免使用它们。它们现在是遗留的,被 < strong > java.time 框架所取代。
java.util.Date
.Calendar
相反,可以使用以下两种方式:
ZonedDateTime zdt = ZonedDateTime.now();
如果需要旧代码,可以转换为 java.util。日期。通过在 Instant这是在 协调世界时的时间线上的一个时刻。
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.
仅供参考,Joda 时间项目现在在 维修模式,团队建议迁移到 爪哇时间类。
DateTime now = DateTime.now();
要从 Joda-Time日期时间对象转换为与其他类进行交互操作的 java.util.Date..。
java.util.Date date = now.toDate();
在发布之前搜索 StackOverflow。您的问题已经被提出并得到了回答。
爪哇时间框架内置于 Java8及更高版本中。这些类取代了令人讨厌的旧的 遗产日期时间类,如 java.util.Date、 Calendar和 SimpleDateFormat。
Calendar
现在在 维修模式中的 Joda 时间项目建议迁移到 爪哇时间类。
要了解更多,请参阅 Oracle 教程。并搜索堆栈溢出许多例子和解释。规范是 JSR 310。
从哪里获得 java.time 类?
< strong > Three Ten-Ultra 项目使用其他类扩展 java.time。这个项目是将来可能添加 java.time 的试验场。您可以在这里找到一些有用的类,比如 Interval、 YearWeek、 YearQuarter和 更多。
Interval
YearWeek
YearQuarter
你也可以通过使用 getter 获取当前的小时、分钟和秒:
new Date(System.currentTimeMillis()).get....()
试试这种方法,效率更高,兼容:
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);
干杯。
附注: 这至少只能在 Java8中使用!
final String currentTime = String.valueOf(System.currentTimeMillis());