我正在尝试与第三方服务集成,该服务想知道已经过了多少“UTC时间(自01/01/0001 00:00:00开始)”.
什么是勾?
假设它是第二个(我不知道它是)…我应该怎么做自01/01/0001 00:00:00以来?这比32位整数大.不确定它是否大于64位整数但PHP的date()函数返回32位整数 – 而不是64位整数.
如果我知道在01/01/0001 00:00:00和UNIX纪元之间经过了多少秒,我可以使用bcmath或gmp将该量(作为常量)添加到time()(再次假设滴答是秒)但是我不知道那个号码会是什么.
有任何想法吗?
最佳答案 我希望用.NET编写的服务作为.NET框架知道DateTime.Ticks.
documentation说了一个勾号:
A single tick represents one hundred nanoseconds or one ten-millionth of a second. There are 10,000 ticks in a millisecond.
The value of this property represents the number of 100-nanosecond intervals that have elapsed since 12:00:00 midnight, January 1, 0001, which represents DateTime.MinValue. It does not include the number of ticks that are attributable to leap seconds.
因此,从01/01/0001 00:00:00到10.000.000,您将需要多秒.
我找到了价值:
621,355,968,000,000,000
对于07.01中01-01-0001T00:00:00到01-01-1970的刻度.我不知道它是如何计算的.我假设.NET框架将输出它.我建议验证该值并在PHP中将其声明为常量,如您所述.
PHP的int类型是有符号整数.它的大小取决于您使用的系统.如果它是64位系统,则值范围应足够大以达到此目的.如果没有,您可以使用GMP extension或BC Math扩展名来处理大数字.