如何设置java时代的时间?

时间:2013-07-04 12:37:37

标签: java android date time epoch

我正在尝试将时间设置为java中的纪元日期时间。我怎样才能做到这一点?所以我可以在纪元日期之前获得一些月的日子等。

4 个答案:

答案 0 :(得分:7)

使用新日期(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

答案 1 :(得分:4)

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

答案 2 :(得分: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 :(得分:1)

TL;博士

Instant.EPOCH

使用java.time

包括DateCalendar在内的麻烦的旧日期时间类现在已经遗留下来,取而代之的是java.time类。大部分java.time功能都被反向移植到Android(见下文)。

要获取1970-01-01的{​​{3}}日期的仅限日期值,请使用LocalDateJava & Unix epoch reference类表示没有时间且没有时区的仅限日期的值。

LocalDate epoch = LocalDate.ofEpochDay( 0L ) ;
  

epoch.toString:1970-01-01

要获取同一纪元的日期时间值,请使用常量LocalDateInstant.EPOCH类代表Instant中时间轴上的一个时刻,分辨率为UTC(小数部分最多九(9)位)。

Instant epoch = Instant.EPOCH ;
  

epoch.toString():1970-01-01T00:00:00Z

标准nanoseconds输出中的ZZulu的缩写,表示ISO 8601

要获得此后的若干年,月,日,请使用UTC课程。

Period period = Period.between( 
     LocalDate.ofEpochDay( 0 ) , 
     LocalDate.now( ZoneId.of( "America/Montreal" ) ) 
) ;

搜索Stack Overflow以获取Period

的更多讨论和示例

关于java.time

Period框架内置于Java 8及更高版本中。这些类取代了麻烦的旧java.time日期时间类,例如legacyjava.util.Date和&amp; Calendar

现在位于SimpleDateFormatJoda-Time项目建议迁移到maintenance mode类。

要了解详情,请参阅java.time。并搜索Stack Overflow以获取许多示例和解释。规范是Oracle Tutorial

从哪里获取java.time类?

  • JSR 310Java SE 8以及之后
    • 内置。
    • 带有捆绑实现的标准Java API的一部分。
    • Java 9增加了一些小功能和修复。
  • SE 9Java SE 6
    • 大部分java.time功能都被反向移植到Java 6&amp; 7 {in SE 7
  • ThreeTen-Backport
    • Android项目专门为Android调整 ThreeTen-Backport (如上所述)。
    • 请参阅ThreeTenABP