Ibm midrange as400 RPGLE以UNIX历元格式获取UTC时间
仍在学习RPG/as400。 我需要以UNIX epoch格式获取UTC的当前日期和时间。我在搜索如何将标准的dd/mm/yyyy hh:mm:ss转换为unix格式时也没有太多运气。Ibm midrange as400 RPGLE以UNIX历元格式获取UTC时间,ibm-midrange,rpgle,Ibm Midrange,Rpgle,仍在学习RPG/as400。 我需要以UNIX epoch格式获取UTC的当前日期和时间。我在搜索如何将标准的dd/mm/yyyy hh:mm:ss转换为unix格式时也没有太多运气。 有可能从as400中提取UNIX时间戳吗?我真的怀疑是否需要这样做 但是从ILE RPG,您可以调用C函数…这似乎是您想要的函数… 如果您不熟悉从ILE RPG调用C函数,这里有一篇很好的文章,甚至介绍了mktime()。 请注意,所需的原型和数据结构定义可以在“System Includes”库QSYSIN
有可能从as400中提取UNIX时间戳吗?我真的怀疑是否需要这样做 但是从ILE RPG,您可以调用C函数…这似乎是您想要的函数…
如果您不熟悉从ILE RPG调用C函数,这里有一篇很好的文章,甚至介绍了mktime()。 请注意,所需的原型和数据结构定义可以在“System Includes”库QSYSINC、ILERPE源文件(QRPGLESRC)成员“time”中找到……仅此而已 如果您的系统上没有QSYSINC库,请让管理员安装操作系统(LICPGM 5770-ss1)的
选项13-系统开放性包括
最后,您可以使用以下摘录
D time_t 10I 0 template
D struct_tm...
D DS QUALIFIED ALIGN
D TEMPLATE
// int tm_sec; /* seconds after the minute (0-61) */
// int tm_min; /* minutes after the hour (0-59) */
// int tm_hour; /* hours since midnight (0-23) */
// int tm_mday; /* day of the month (1-31) */
// int tm_mon; /* months since January (0-11) */
// int tm_year; /* years since 1900 */
// int tm_wday; /* days since Sunday (0-6) */
// int tm_yday; /* days since January 1 (0-365) */
// int tm_isdst; /* Daylight Saving Time flag */
D tm_sec 10I 0
D tm_min 10I 0
D tm_hour 10I 0
D tm_mday 10I 0
D tm_mon 10I 0
D tm_year 10I 0
D tm_wday 10I 0
D tm_yday 10I 0
D tm_isdst 10I 0
D mktime PR LIKE(time_t)
D EXTPROC('mktime')
D time LIKEDS(struct_tm)
我真的怀疑有没有这个必要
但是从ILE RPG,您可以调用C函数…这似乎是您想要的函数…
如果您不熟悉从ILE RPG调用C函数,这里有一篇很好的文章,甚至介绍了mktime()。
请注意,所需的原型和数据结构定义可以在“System Includes”库QSYSINC、ILERPE源文件(QRPGLESRC)成员“time”中找到……仅此而已
如果您的系统上没有QSYSINC库,请让管理员安装操作系统(LICPGM 5770-ss1)的选项13-系统开放性包括
最后,您可以使用以下摘录
D time_t 10I 0 template
D struct_tm...
D DS QUALIFIED ALIGN
D TEMPLATE
// int tm_sec; /* seconds after the minute (0-61) */
// int tm_min; /* minutes after the hour (0-59) */
// int tm_hour; /* hours since midnight (0-23) */
// int tm_mday; /* day of the month (1-31) */
// int tm_mon; /* months since January (0-11) */
// int tm_year; /* years since 1900 */
// int tm_wday; /* days since Sunday (0-6) */
// int tm_yday; /* days since January 1 (0-365) */
// int tm_isdst; /* Daylight Saving Time flag */
D tm_sec 10I 0
D tm_min 10I 0
D tm_hour 10I 0
D tm_mday 10I 0
D tm_mon 10I 0
D tm_year 10I 0
D tm_wday 10I 0
D tm_yday 10I 0
D tm_isdst 10I 0
D mktime PR LIKE(time_t)
D EXTPROC('mktime')
D time LIKEDS(struct_tm)
当你与外界交流时,总是需要这样的东西,例如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;
当你与外界交流时,总是需要这样的东西,例如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;
Unix epoch不是一个整数,表示自1970年1月1日以来的秒数吗?Unix epoch不是一个整数,表示自1970年1月1日以来的秒数吗?谢谢。我需要这个来提取我们资产的位置历史记录。日期范围必须为unix格式,并编码到请求标题中。谢谢。我需要这个来提取我们资产的位置历史记录。日期范围必须为unix格式,并编码到请求头中。非常感谢!非常感谢你!