获取当前时间的Java代码

时间:2009-05-07 09:57:48

标签: java time

我正在java中搜索代码,以便将本地PC系统时间提取或同步到我的应用程序中。

13 个答案:

答案 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中查看的任何其他信息:

SimpleDateFormat

Calendar

答案 1 :(得分:139)

两个

new java.util.Date()

System.currentTimeMillis()

会给你当前的系统时间。

答案 2 :(得分:45)

TL;博士

Instant.now()  // UTC

...或...

ZonedDateTime.now(
    // Specify time zone.
    ZoneId.of( "Pacific/Auckland" )
)  

详细

捆绑的java.util.Date / .Calendar类非常麻烦。避免他们。它们现在已经遗留下来,取而代之的是java.time框架。

相反,请使用:

java.time

ZonedDateTime zdt = ZonedDateTime.now();

如果旧代码需要,请转换为java.util.Date。点击InstantUTC的时间轴上的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。您的问题已经被问及并得到了解答。


关于java.time

legacy框架内置于Java 8及更高版本中。这些类取代了麻烦的旧java.util.Date日期时间类,例如CalendarSimpleDateFormat和& Joda-Time

现在位于maintenance modejava.time项目建议迁移到Oracle Tutorial类。

要了解详情,请参阅JSR 310。并搜索Stack Overflow以获取许多示例和解释。规范是Java SE 8

从哪里获取java.time类?

Interval项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如YearWeekYearQuartermore和{{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....()