2012-06-06 97 views
3

我期待從UTC時間到使用MATLAB進行時間轉換。UTC時間到字符串轉換

我想從2010年10月 月底的數據文件說,這是在UTC時間報告和現場以毫秒爲單位的整數字符串值,它是圍繞3.02e11收集的數據文件中提取時間。我想將其轉換爲字符串,但我有一些麻煩。

我發現單位絕對以毫秒爲單位,所以我將其轉換爲幾分之一天以便與datenum格式兼容。

如果數據是在10月底收集的(比如2010年10月31日),那麼我可以猜出我可能得到的數字是多少。我認爲,2001年1月1日,將是一個很好的時代,並計算出什麼樣的(天)數的我可能會得到:

suspectedDate = datenum('October 31, 2010') 
suspectedEpoch = datenum('January 1, 2001') 

suspectedTimeInDays = suspectedDate - suspectedEpoch 

所出如。

然而,我的實際時間,以天爲單位,出來用下面的代碼

actualTime = 3.02e11 
actualTimeInDays = 3.02e11/1000/24/3600 

3495.4

這是令人不安的,因爲差異只有94.6 - 不是全年。這意味着無論是對文件的文檔錯誤或時代已經接近2001年4月1-5日:

calculatedEpoch = suspectedDate - actualTimeInDays 
calculatedEpochStr = datestr(calculatedEpoch) 

或者,如果該時期是2001年1月1日則在文件中的實際日期是從7月底。

ifEpochIsJanuaryDate = suspectedEpoch + actualTimeInDays 
ifEpochIsJanuaryDateStr = datestr(ifEpochIsJanuaryDate) 

這是一個已知的UTC格式,任何人都可以就如何擺脫3.02e11幅度數量十月日期的建議?

回答

4

Unix時間今天約13e11,並自1970年以來

在毫秒進行測量。如果你的時間大約爲3E11,那麼它可能是自2000年以來的一年。

>> time_unix = 1339116554872; % example time 
>> time_reference = datenum('1970', 'yyyy'); 
>> time_matlab = time_reference + time_unix/8.64e7; 
>> time_matlab_string = datestr(time_matlab, 'yyyymmdd HH:MM:SS.FFF') 

    time_matlab_string = 

    20120608 00:49:14.872 

注:

1)1970年變更爲2000,如果你的時間是自2000年以來,

2)查看matlab時間的定義。

3)8.64e7是一天中的毫秒數。

4)Matlab不應用任何時區偏移,所以結果是相同的UTC時間。

5)落後的改造實例:

>> matlab_time = now; 
>> unix_time = round(8.64e7 * (matlab_time - datenum('1970', 'yyyy'))) 

unix_time = 

      1339118367664 
+0

我從來沒有找到一個明確的答案,所以我標記你最接近我們將得到。 – Steve

+0

@Steve,我想你能做的最好的是詢問這個值代表那些創建這些數據的人。如果是幾毫秒,那麼你的3.02e11/8.64e7/365 = 9.5764年,如果數據真的在2010年10月31日收集的話,這不會給出任何線索 – Serg

2

你不能只做自己的時代。還有datenum會在幾天內返回。所以你用數學的親密度只是一個巧合。

原來,

>> datenum('Jan-1-0000') 

ans = 

    1 

>> datenum('Jan-1-0001') 

ans = 

    367 

所以Matlab的應自1月1日,0000(不是筆誤)將返回天的事情

不過,我仔細看看這個3.02e11號碼,找出它的含義。我很確定它不是標準的Unix UTC,應該是seconds since January 1, 1970。它太大了。它接近GMT:週一,1月1日11540 08:53:20 UTC。

+0

你是絕對正確的。我確信數字中的LSB以毫秒爲單位,所以我們可以用1000除以得到秒。那麼看起來這個日期是在2001年前後的某個時間。那麼問題是,提到4月還是4個月的轉變是有意義的。 – Steve

+1

從數學來看,整個數字都是毫秒,令人懷疑。也許值得再多調查一下這個數字的意義。我認爲這個4月份的事情是一個巧合和瘋狂的追逐。 –