如何将时间设置为纪元时间java?

Posted

技术标签:

【中文标题】如何将时间设置为纪元时间java?【英文标题】:How to set time to epoch time java? 【发布时间】:2013-07-02 11:20:55 【问题描述】:

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

【问题讨论】:

新日期(0L);试试这个 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案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);

【讨论】:

【参考方案4】:

tl;博士

Instant.EPOCH

使用 java.time

麻烦的旧日期时间类包括 DateCalendar 现在是遗留的,被 java.time 类所取代。大部分 java.time 功能都向后移植到 android(见下文)。

要获取 1970-01-01 的 Java & Unix epoch reference 日期的仅日期值,请使用 LocalDateLocalDate 类表示没有时间和时区的仅日期值。

LocalDate epoch = LocalDate.ofEpochDay( 0L ) ;

epoch.toString: 1970-01-01

要获取同一时期的日期时间值,请使用常量Instant.EPOCHInstant 类代表UTC 时间线上的时刻,分辨率为nanoseconds(最多九 (9) 位小数)。

Instant epoch = Instant.EPOCH ;

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

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

要获取从那时起的年数、月数、天数,请使用 Period 类。

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

搜索 Stack Overflow 以获取更多关于 Period 的讨论和示例。


关于java.time

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

Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。

要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。

从哪里获得 java.time 类?

Java SE 8SE 9 及更高版本 内置。 标准 Java API 的一部分,带有捆绑实现。 Java 9 添加了一些小功能和修复。 Java SE 6SE 7 ThreeTen-Backport 中的大部分 java.time 功能都向后移植到 Java 6 和 7。 Android ThreeTenABP 项目专门针对 Android 改编了 ThreeTen-Backport(如上所述)。 见How to use ThreeTenABP…

【讨论】:

以上是关于如何将时间设置为纪元时间java?的主要内容,如果未能解决你的问题,请参考以下文章

std::chrono:将时钟的纪元设置为 1/1/0000

为啥Django时区设置会影响纪元时间?

将 UNIX 纪元转换为日期对象

如何将(round)纪元时间转换为最接近的小时和日期wrt IST(在Java中)

如何将 Unix 纪元时间戳与 SQL 中的 DATE 进行比较?

如何使用 Java 将 unix 纪元的列转换为 Apache spark DataFrame 中的日期?