2015-06-04 151 views
1

我有一個.json文件有很多的文件,每個文件是這樣的:轉換大紀元時間戳的日期格式

{"_id":{"$oid":"54ff56116d"},"caption":{"created_time":"1421434541",....} 

我需要created_time轉換爲日期格式在我的每一個文件。

你有什麼想法嗎?

回答

0

既然你有10位數的數字作爲創建的時間,你可能使用的是'Unix時間戳',這是從The Epoch開始的秒數,它是1970-01-01 00:00:00 +00:00( 1970年1月1日上午在UTC或GMT時區的午夜)。如果你有13位數字,那麼從Java中使用的The Epoch開始可能是毫秒。還有其他系統,但這是一個合理的猜測。

有很多功能系統會將這些值轉換爲日期。

$ timestamp 1421434541 
1421434541 = Fri Jan 16 10:55:41 2015 
$ timestamp -u 1421434541 
1421434541 = Fri Jan 16 18:55:41 2015 
$ timestamp -T '%Y-%m-%d %H:%M:%S' -u 1421434541 
1421434541 = 2015-01-16 18:55:41 
$ 

:我使用標準庫函數,我用來驗證你的約會有一個C程序(本地時區:美國/太平洋,又名美洲/洛杉磯)

程序使用strtol()到將字符串中的數字轉換爲long,然後使用localtime()gmtime()將其拆分爲struct tm,然後使用strftime()格式化結果。

的GNU date命令可以用來做的東西太多:

$ /usr/gnu/bin/date -d @1421434541 +'%Y-%m-%d %H:%M:%S' 
2015-01-16 10:55:41 
$ 

既然你沒有確定你的主機的語言,它是不是真的可以告訴你使用什麼。無論您選擇哪種語言,都會有相當多的保證,但會有可用的代碼來處理轉換。

+0

謝謝,我沒有任何特定的主機語言,但我的操作系統是Linux。 我的主要問題是如何做到100000行?我不能一個一個去做, – sinaei

+0

你怎麼能避免一個接一個呢?您必須閱讀100,000行(或包含100,000條記錄的一行),並在您找到JSON庫時或在找到它之後處理每行。您尚未指定您使用的任何語言,因此很難爲您提供幫助。 GNU'日期'一次處理一個日期/時間。我的'timestamp'可以接受任意數量的字符串 - 你的O/S可能會停止它一次處理它們,但是你可以在一次調用中完成數千次。你需要更多的信息,而不僅僅是時間......但是你沒有說什麼。 –

+0

感謝您的回答!它幫助了我 – sinaei

相關問題