获取当前时间的Java代码

149 java time

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

Art*_*tur 162

试试这个:

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()) );
    }

}
Run Code Online (Sandbox Code Playgroud)

您可以按照自己喜欢的方式格式化SimpleDateFormat.有关您可以在java api中查看的任何其他信息:

的SimpleDateFormat

日历

  • 无需调用cal.getTime()方法2次,它可能在格式化日期之后被赋值为字符串....... SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); String loginTime = sdf.format(cal.getTime()); (7认同)
  • 仅供参考,这里使用的麻烦类现在已成为旧版,由* java.time *类取代。 (2认同)

sle*_*ske 142

new java.util.Date()

System.currentTimeMillis()

会给你当前的系统时间.


Bas*_*que 48

TL;博士

Instant.now()  // UTC
Run Code Online (Sandbox Code Playgroud)

…要么…

ZonedDateTime.now(
    // Specify time zone.
    ZoneId.of( "Pacific/Auckland" )
)  
Run Code Online (Sandbox Code Playgroud)

细节

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

相反,使用:

java.time

ZonedDateTime zdt = ZonedDateTime.now();
Run Code Online (Sandbox Code Playgroud)

如果需要旧代码,请转换为java.util.Date.通过UTCInstant时间轴上的片刻.

java.util.Date date = java.util.Date.from( zdt.toInstant() );
Run Code Online (Sandbox Code Playgroud)

时区

最好明确指定所需/预期的时区,而不是隐式依赖JVM的当前默认时区.

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.now( zoneId );  // Pass desired/expected time zone.
Run Code Online (Sandbox Code Playgroud)

乔达时间

仅供参考,Joda-Time项目现在处于维护模式,团队建议迁移到java.time类.

DateTime now = DateTime.now();
Run Code Online (Sandbox Code Playgroud)

要从Joda-Time DateTime对象转换为java.util.Date以与其他类进行交互...

java.util.Date date = now.toDate();
Run Code Online (Sandbox Code Playgroud)

在发布之前搜索StackOverflow.您的问题已经被问及并回答了.


关于java.time

java.time框架是建立在Java 8和更高版本.这些类取代麻烦的老传统日期时间类,如java.util.Date,Calendar,和SimpleDateFormat.

现在处于维护模式Joda-Time项目建议迁移到java.time类.

要了解更多信息,请参阅Oracle教程.并搜索Stack Overflow以获取许多示例和解释.规范是JSR 310.

从哪里获取java.time类?

ThreeTen-额外项目与其他类扩展java.time.该项目是未来可能添加到java.time的试验场.您可以在此比如找到一些有用的类Interval,YearWeek,YearQuarter,和更多.


mP.*_*mP. 10

System.currentTimeMillis的()

其他一切都可以解决..例如new Date()调用System.currentTimeMillis().


Ver*_*ass 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);
Run Code Online (Sandbox Code Playgroud)


Dam*_*iii 7

只是为了告知更进一步的开发人员,谢天谢地,罗伯特布尔克,我只想在这个主题上添加我的石头.

如果您只想获得HH:MM:SS格式,请执行以下操作:

LocalTime hour = ZonedDateTime.now().toLocalTime().truncatedTo(ChronoUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)

干杯.

PS:这至少只适用于Java 8!


Nun*_*ado 5

如上所述,你可以使用

Date d = new Date();
Run Code Online (Sandbox Code Playgroud)

或使用

Calendar.getInstance();
Run Code Online (Sandbox Code Playgroud)

或者如果你想要毫克

System.currentTimeMillis()
Run Code Online (Sandbox Code Playgroud)


Rai*_*baz 4

不太确定你的意思,但你可能只是需要

Date d = new Date();
Run Code Online (Sandbox Code Playgroud)