如何将unix时间转换为TOD时钟(STCK)?
请你帮我把epoch Unix时间转换成TOD时钟(STCK)8字节。 e、 g:如何将unix时间转换为TOD时钟(STCK)?,c,assembly,sas,mainframe,zos,C,Assembly,Sas,Mainframe,Zos,请你帮我把epoch Unix时间转换成TOD时钟(STCK)8字节。 e、 g: 十六进制纪元时间='175BC71AFE2'X 十进制纪元时间=1605184368610 我想把这个十进制数转换成STCK(TOD时钟时间) Store Clock指令STCK获取TOD时钟并将其存储在8字节字段中。位位置31大约每1.048576秒递增一次。下面是一个示例,它提供了将STCK转换为当前日期的方法 关于将当前时间转换为TOD值以使用Rexx比较日志流中的时间戳的类似问题,请参见此答案 我不确定您
Store Clock指令STCK获取TOD时钟并将其存储在8字节字段中。位位置31大约每1.048576秒递增一次。下面是一个示例,它提供了将STCK转换为当前日期的方法 关于将当前时间转换为TOD值以使用Rexx比较日志流中的时间戳的类似问题,请参见此答案 我不确定您的应用程序是什么,但也要注意,有一条STCKE指令使用扩展格式 为方便起见,请在此报价
This works for me in a Rexx procedure:
Tod = (epoc*4096000000)+9048018124800000000
TOD (Time-of-Day in S360, S370, S390 & z/Arch IBM's archs) is a
64bit counter whose Bit position 31 is incremented every 1.048576
seconds, starting at 1900-01-01.
So, 2**32/1.048576 = 4096000000 = 1 sec.
9048... is the difference between 1900-01-01 and epoch 1970-01-01 in TOD units.
有关STCK和STCKE格式的更多信息,请参阅第7-182页的。您能用余数除法吗?不确定unix时间是否也计算闰秒,这会使事情复杂化。是的,我可以。我用的是C语言,我的问题是余数,我需要余数的STCK。不确定STCK是什么,但我假设TOD的意思是小时分秒。您可以使用
div
。我尝试执行与此处显示的完全相同的操作,但我的问题是epoch是以秒为单位的,当除以1000时,提醒被截断。两件事。首先,什么是操作系统。第二,你想做什么。比较数值。储存它们?了解应用程序可能有助于更好地帮助您1)Z/OS V2.4 2)其应用程序在Z/OS Connect EE中监视API请求程序的两个时间点之间的运行时间。我需要计算两个STCK时间之间的差值以获得经过的时间。经过的时间是将Unix历元时间转换为STCK格式,但不会得到秒数。因为历元是以秒为单位的,所以您要查找的百分之一百分辨率。您是在记录时间并进行比较,还是在使用z/OS Connect的日志/度量数据?您可以调用一些汇编程序服务,比如STCKCONV,它可以使您将两个STCK时间转换为十进制格式进行比较。