我想找到使用COBOL的两个时间戳之间的差异。 我的时间戳是16字节,这是前面的。一个时间戳:2010060314314826 请提供示例代码
答案 0 :(得分:1)
如果您在支持LE的IBM大型机环境中工作,请尝试查找: CEESECS--Convert timestamp to seconds。 使用此例程,您可以将每个时间戳转换为Lilian秒,然后从中减去一个 另一个在几秒钟内给出结果。
同样的指南 提供COBOL code 做你正在寻找的。关于此示例中您需要进行的唯一更改是时间戳的格式,如下所示:
MOVE "YYYYMMDDHHMISS99" TO Vstring-text of PICSTR.
您可以将秒数计算为天数,小时数,分钟数等 CEESECI--Convert seconds to integers 服务。同样,提供了特定的COBOL示例。
答案 1 :(得分:0)
最有可能格式化为:
YYYY MM DD HH MM SS CC
在两个字段中移动时间戳,例如:
01 field-to-load.
03 year pic(9999).
03 month pic(99).
03 day pic(99).
03 hour pic(99).
03 min pic(99).
03 sec pic(99).
03 cents pic(99).
并使用级别03执行日期/时间算术。
如果您的时间戳不是显示类型数据,则可能需要执行上一次转换。如果您需要更多关于它的详细信息,请发布时间戳字段的字段定义。
我希望不要因为发布cobol代码而被禁止使用。
HTH。
Here您可以找到用于计算日期差异的HP COBOL程序。你只需添加(小时,分钟,秒)逻辑,非常容易。
答案 2 :(得分:0)
除非你的Cobol版本有日期/时间数学,否则你有两个选择:
1)将日期戳转换为自任意过去日期(例如17-nov-1978)以来每年的秒数,与您比较它的日期/时间相同,在之间做一个简单的减法两个结果,然后将得到的秒数转换回增量时差,或
2)分别减去日期/时间的每个部分,记录每个月的天数和闰年(如果您希望它工作超过4年)。这个选项非常多毛,失败率非常高,所以我不推荐它。
答案 3 :(得分:0)
Cobol 85内置了日期功能,可以提供帮助。
COMPUTE FOO = FUNCTION INTEGER-OF-DATE(YYYYMMDD).
COMPUTE FOO2 = FUNCTION INTEGER-OF-DATE(DATEVAR).
COMPUTE DIFF = FOO2 - FOO.