从 unix 值中获取前一小时/前一天的时间戳

用户7046311

我的纪元时间戳为 1567318967(2019 年 9 月 1 日上午 6:22:47)。从给定的纪元时间戳,如何使用 Java 获取前一小时和前一天并在纪元中输出结果?

IE

前一小时:输出结果:1567315367(2019 年 9 月 1 日 5:22:47 AM)

前一天:输出结果:1567232567(2019 年 8 月 31 日 6:22:47 AM)

鉴于时间戳为 1567318967 ,我尝试了以下操作

       previousDayInEpoch = moment(timestamp).substract(1, days)
       previosHourInEpoch = moment(timestamp).substract(1, hour)

想使用 Java 输出前一天和前一小时的结果。

奥莱VV

时间

这是现代 Java 日期和时间 API java.time 擅长的情况之一:

    ZoneId zone = ZoneId.of("Pacific/Kwajalein");
    long originalTimestamp = 1_567_318_967L;
    ZonedDateTime dateTime = Instant.ofEpochSecond(originalTimestamp).atZone(zone);

    long anHourLess = dateTime.minusHours(1).toInstant().getEpochSecond();
    System.out.println("previous hour: " + anHourLess);

    long aDayLess = dateTime.minusDays(1).toInstant().getEpochSecond();
    System.out.println("previous day: " + aDayLess);

输出是你所期望的:

previous hour: 1567315367
previous day: 1567232567

时区很重要

减去一天时要注意的重要一点是,一天并不总是 24 小时。它有时可能是例如 23 小时、23.5 小时或 25 小时,例如在进入夏令时 (DST) 和返回时。ZonedDateTime知道指定时区中这一特定日子的长度,因此我们需要使用的类。因此,填写我放置太平洋/夸贾林的所需时区也很重要。

编辑:要使用系统时区:

    ZoneId zone = ZoneId.systemDefault();

这使用 JVM 的默认时区设置,通常在 JVM 启动时从操作系统中获取。但是,在同一 JVM 中运行的任何程序都可能随时更改该设置,因此通常很脆弱。使用风险自负(或用户自担风险)。

如果你只想24小时

也对使用 Instant 感到好奇,请您更新 24 小时前正在考虑的其他选项的答案。

在这种情况下,我们不需要任何时区或任何ZonedDateTime. 要从 中减去一小时或一天(总是 24 小时)Instant,您需要知道如何做。它是这样的:

    Instant originalInstant = Instant.ofEpochSecond(originalTimestamp);

    long anHourLess = originalInstant.minus(1, ChronoUnit.HOURS).getEpochSecond();
    System.out.println("previous hour: " + anHourLess);

    long aDayLess = originalInstant.minus(1, ChronoUnit.DAYS).getEpochSecond();
    System.out.println("previous day: " + aDayLess);

在这种情况下,输出与上面的相同。

关联

Oracle 教程:解释如何使用 java.time 的日期时间

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Python中查找同一小时(包括DST)的第二天的Unix时间戳?

来自分类Dev

将日期转换为unix时间戳时增加一小时

来自分类Dev

Unix Shell脚本中的前一天日期

来自分类Dev

Android-获取一天开始和结束的Unix时间戳

来自分类Dev

如何在 sql server 的 UNIX 时间戳中添加一天?

来自分类Dev

如何使用 TIMEZONE 列获取时间戳(4)的前一小时?

来自分类Dev

降低时间序列的频率并在夏令时保持一天中的同一小时R

来自分类Dev

在列表中查找最接近一小时前的时间戳

来自分类Dev

在列表中查找最接近一小时前的时间戳

来自分类Dev

每天选择一天中的一小时进行分析

来自分类Dev

打字稿:时间戳增加一小时

来自分类Dev

获取过去一小时和当前一小时插入到MySQL表中的值

来自分类Dev

获取过去一小时和当前一小时插入到MySQL表中的值

来自分类Dev

PHP获取前一天午夜的时间戳

来自分类Dev

PHP循环(一周中的每一天和每一小时)

来自分类Dev

将 LocalDate 转换为时间戳时获取前一天的 23:00

来自分类Dev

如何在UNIX(HPUX)中获取上个月的最后一天

来自分类Dev

选择 Unix 时间戳落在指定小时或天的位置

来自分类Dev

使用Perl获取前一小时的UTC / GMT时间

来自分类Dev

将Java中的时间调整为前一小时的边界

来自分类Dev

返回带有小时时间戳的过去一小时的行

来自分类Dev

在SQL中从前一小时获取值并从当前值中减去

来自分类Dev

如何通过一个查询从最后一小时,最后一天和上个月获取数据?

来自分类Dev

Unix时间戳怀疑

来自分类Dev

php比较一小时内的时间戳+/-

来自分类Dev

如何在用户退出网站后一小时或一天销毁会话

来自分类Dev

获取节点js中唯一日期的unix时间戳

来自分类Dev

在 Python 中获取一个月开始和结束的 Unix 时间戳

来自分类Dev

如何计算每小时的值并将前一小时和下一小时显示到数据框中具有最高值的那个小时?

Related 相关文章

  1. 1

    如何在Python中查找同一小时(包括DST)的第二天的Unix时间戳?

  2. 2

    将日期转换为unix时间戳时增加一小时

  3. 3

    Unix Shell脚本中的前一天日期

  4. 4

    Android-获取一天开始和结束的Unix时间戳

  5. 5

    如何在 sql server 的 UNIX 时间戳中添加一天?

  6. 6

    如何使用 TIMEZONE 列获取时间戳(4)的前一小时?

  7. 7

    降低时间序列的频率并在夏令时保持一天中的同一小时R

  8. 8

    在列表中查找最接近一小时前的时间戳

  9. 9

    在列表中查找最接近一小时前的时间戳

  10. 10

    每天选择一天中的一小时进行分析

  11. 11

    打字稿:时间戳增加一小时

  12. 12

    获取过去一小时和当前一小时插入到MySQL表中的值

  13. 13

    获取过去一小时和当前一小时插入到MySQL表中的值

  14. 14

    PHP获取前一天午夜的时间戳

  15. 15

    PHP循环(一周中的每一天和每一小时)

  16. 16

    将 LocalDate 转换为时间戳时获取前一天的 23:00

  17. 17

    如何在UNIX(HPUX)中获取上个月的最后一天

  18. 18

    选择 Unix 时间戳落在指定小时或天的位置

  19. 19

    使用Perl获取前一小时的UTC / GMT时间

  20. 20

    将Java中的时间调整为前一小时的边界

  21. 21

    返回带有小时时间戳的过去一小时的行

  22. 22

    在SQL中从前一小时获取值并从当前值中减去

  23. 23

    如何通过一个查询从最后一小时,最后一天和上个月获取数据?

  24. 24

    Unix时间戳怀疑

  25. 25

    php比较一小时内的时间戳+/-

  26. 26

    如何在用户退出网站后一小时或一天销毁会话

  27. 27

    获取节点js中唯一日期的unix时间戳

  28. 28

    在 Python 中获取一个月开始和结束的 Unix 时间戳

  29. 29

    如何计算每小时的值并将前一小时和下一小时显示到数据框中具有最高值的那个小时?

热门标签

归档