【问题标题】:Convert Java Timestamp in TOD Format (Time of Day) on z/os在 z/os 上将 Java 时间戳转换为 TOD 格式(时间)
【发布时间】:2017-09-12 08:41:07
【问题描述】:

由于 ZLogstream 类的搜索方法“readSearch”需要 TOD 格式的时间戳,所以我必须将 JAVA 时间戳转换为 TOD(日期时间)格式。

我找不到任何可以为我做的类(包装器)。只有 ZUtil 类的 getTodClock 给了我当前的 TOD(日期时间),但我无法以正确的格式转换任何时间戳。

有人可以帮我吗?

提前致谢。

【问题讨论】:

  • 你能举例说明你的意思吗?到目前为止,您尝试过什么?
  • 是的,当然。我试图通过使用 long unixTimestamp = Instant.now().getEpochSecond(); 来获取 UnixTimeStamp但这不是 TOD,它预计自 1900 年以来的秒数而不是 1970 年,因为 UnixTimestamp 是...
  • 如果您有 unix 纪元秒数,您可以添加 2208988800 以转换为自 1900 年以来的秒数吗? (JS中计算的幻数:(new Date('1970-01-01T00:00Z') - new Date('1900-01-01T00:00Z')) / 1000
  • 我认为这并不像听起来那么容易。我在这里找到了如何在 Java 时间戳中转换 TOD 的解决方案:stackoverflow.com/questions/14817202/… 但我需要相反的方式 - 将 Java 时间戳转换为 TOD。这里的问题是最后三个数字是IBM实习生使用的。有人有解决办法吗?
  • 如果您只想将现在的瞬间作为 TOD 值,请使用 ZUtil.getTodClock

标签: java zos


【解决方案1】:

这在 Rexx 过程中适用于我:

Tod = (epoc*4096000000)+9048018124800000000

TOD(S360、S370、S390 和 z/Arch IBM 的拱门中的时间)是一个 64 位计数器,其位位置 31 每 1.048576 秒递增一次,从 1900 年 1 月 1 日开始。

所以,2**32/1.048576 = 4096000000 = 1 秒。

9048... 是 1900-01-01 和纪元 1970-01-01 之间的差异,以 TOD 为单位。

【讨论】:

  • 请详细说明你的答案。
  • 需要更多详细信息?
  • 这看起来更好。请记住,您的答案越好,其他用户就越容易理解,他们就越有可能投票赞成。 :)
猜你喜欢
  • 2015-09-08
  • 1970-01-01
  • 2021-06-15
  • 2018-03-27
  • 2016-11-26
  • 2011-09-18
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
相关资源
最近更新 更多