如何将时间设置为Java的纪元时间?

8

我想在Java中将时间设置为纪元日期时间。 我该如何做到这一点? 这样我就可以从纪元日期时间中获取年份、月份、日期等信息。


new Date(0L); 尝试一下 - nachokk
4个回答

10

使用 new Date(0L);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(sdf.format(new Date(0L)));

请注意你的时区,因为它将根据默认设置而改变。

更新 在Java 8中,您可以使用新的java.time

您有这个常量Instant.EPOCH


4

据我理解,您只想将其存储在某个变量中?那么请使用 Date epoch = new Date(0);

。该代码可将日期存储在名为“epoch”的变量中。


3

尝试这个

    Calendar c = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
    c.setTimeInMillis(0);
    int day = c.get(Calendar.DATE);
    int month = c.get(Calendar.MONTH) + 1;
    int year = c.get(Calendar.YEAR);

3

tl;dr

Instant.EPOCH

使用java.time

麻烦的旧日期时间类,包括DateCalendar现在已经过时,被java.time类所取代。许多java.time功能已经向Android进行了后移(见下文)。

要获取仅包含日期值的Java&Unix纪元参考日期1970-01-01,请使用LocalDateLocalDate类表示仅包含日期值而不包含时间和时区的值。

LocalDate epoch = LocalDate.ofEpochDay( 0L ) ;

epoch.toString: 1970-01-01
要获取相同纪元的日期时间值,请使用常量Instant.EPOCHInstant类表示时间线上的一个瞬间,以UTC为基准,分辨率为纳秒(最多九位小数)。
Instant epoch = Instant.EPOCH ;

epoch.toString(): 1970-01-01T00:00:00Z
上述标准ISO 8601输出中的Z代表Zulu,意为UTC
要获取自那时以来的年数、月数和天数,请使用Period类。
Period period = Period.between( 
     LocalDate.ofEpochDay( 0 ) , 
     LocalDate.now( ZoneId.of( "America/Montreal" ) ) 
) ;

在 Stack Overflow 上搜索更多关于Period的讨论和示例。

关于java.time

java.time框架是内置于Java 8及更高版本中的。这些类取代了老旧的传统日期时间类,例如java.util.DateCalendarSimpleDateFormat

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

要了解更多,请查看Oracle教程。并在Stack Overflow上搜索许多示例和解释。规范是JSR 310
如何获取java.time类?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接