首页 > 解决方案 > as400 RPGLE 以 UNIX 纪元格式获取 UTC 时间

问题描述

还在学习RPG/as400。我需要以 UNIX 纪元格式获取 UTC 的当前日期和时间。在搜索如何将标准 dd/mm/yyyy hh:mm:ss 转换为 unix 格式时,我也没有太多运气。是否可以从 as400 中提取 UNIX 时间戳?

标签: ibm-midrangerpgle

解决方案


当你与外界交流时,总是需要这样的事情,fe JWT(检查令牌是否过期)。

您也可以在没有 C 函数的情况下执行此操作:

**FREE

ctl-opt dftactgrp(*no) actgrp(*caller);

dcl-pr sys_getUtcOffset extproc('CEEUTCO');
  offsetHours int(10);
  offsetMinutes int(10);
  offsetSeconds float(8);
  feedback char(12) options(*omit);
end-pr;

dcl-c UNIX_EPOCH_START z'1970-01-01-00.00.00.000000';

main();
*inlr = *on;


dcl-proc main;
  dcl-s uxts int(10);
  dcl-s now timestamp;
  dcl-s offsetHours int(10);
  dcl-s offsetMinutes int(10);
  dcl-s offsetSeconds float(8);

  now = z'2020-04-15-00.00.00.000';
  sys_getUtcOffset(offsetHours : offsetMinutes : offsetSeconds : *omit);

  uxts = %diff(now : UNIX_EPOCH_START : *SECONDS) - offsetSeconds;

  // Output : 1586908800
  dsply %char(uxts);
end-proc;

推荐阅读