2013-01-14 171 views
4

我正在嘗試與第三方服務進行整合,該服務想知道有多少「UTC時間在刻度中(自01/01/0001 00 :00:00)「已經過去了。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(作爲常量)添加到time()(再次假設ticks是秒),但我不知道這個數字會是多少。

任何想法?

回答

3

我期望在.NET中以.NET框架編寫的服務知道DateTime.Ticks。 documentation表示關於打勾:

單個刻度代表一百納秒或百萬分之一秒。毫秒中有10,000個刻度。

此屬性的值表示從0001年1月1日午夜12:00:00開始經過的100納秒間隔的數量,表示DateTime.MinValue。它不包括可歸因於閏秒的滴答數。

因此,自01/01/0001 00:00:00到10.000.000之間,您需要多秒。在此SO post 00至01-01-1970:

我找到的值:

621,355,968,000,000,000 

爲蜱從01-01-0001T00:00。我不知道它是如何計算的。我假設.NET框架將輸出它。我會建議驗證這個值,並像你提到的那樣在PHP中聲明它爲一個常量。

PHP的int類型是一個有符號整數。它的大小取決於你使用的系統。如果它的64位系統的值範圍應該足夠大的目的。如果沒有,您可以使用GMP extensionBC Math擴展名來處理大量數據。

-2

Unix時間是自1970年1月1日以來的秒數。當然,您可以使用諸如bcmath之類的特殊庫來添加時間戳。 unix時間比UTC時間晚1970年,所以常數將爲1970 * 365 * 24 * 60 * 60秒。

+1

這不是問什麼問題 –

+0

@therefromhere這是問題的問題。 (順便說一句,這個常數不算閏年。) – Licson

+0

我認爲問題的主要部分是什麼是蜱。 –

1

「滴答」沒有標準定義。可能表示秒,50秒,60秒或100秒,毫秒或其他任何細分。您需要向服務提供商諮詢詳細信息。

如果他們希望你從第一年開始計數,那就會引發各種其他麻煩的問題,因爲直到1582年才引入公曆(我們現在使用的那個)。 (UTC的概念直到1961年才被標準化。)服務提供商可能考慮或不考慮日曆變更。

一個簡單的方法來檢查所有這一切將問他們現在(或其他最近的參考日期)相應的值是什麼。

相關問題