2011-03-27 31 views
2

考慮到性能和可讀性,應如何將日期編碼爲JSON以用於iPhone應用程序?理想的編碼方式很容易與NSDate協同工作,但也可以在基於Web的後端(即不使用iPhone獨有的API,跨平臺的東西)中使用。下面是一些編碼我一直在考慮:iPhone和JSON:在JSON對象中編碼日期以用於iPhone應用程序

# UNIX Epoc based integer encoding 
{"Date":123456789} 

# ISO 8601 String format 
{"Date":"2011-03-25T20:00Z"} 

請問ISO 8601字符串衝擊性能的解析過多時,成千上萬的日期進行處理?與Epoc相比,性能降低到什麼程度?是否有編碼丟失,完成了上述要求?

+0

如果您獲得此解決方案,請發佈。我也有同樣的問題。我不知道如何轉換成正常時間格式 – 2012-08-07 08:54:18

回答

2

當我控制服務器堆棧時,我總是使用基於Unix時代的編碼。該利大於弊爲我的使用情況

劃時代優點

  • 更快(如果處理大量的日期可能是一個問題。)
  • 需要的只是支持更少的代碼
  • 大約每日期/時間庫/語言

劃時代利弊

  • 不是人類可讀
  • 假輸入(只要它是一個數字)可能仍會給你一個有效日期

ISO利弊

  • 非常可讀
  • 假輸入(格式不正確)可能不會給你一個有效日期

ISO cons

  • 需要更多的字節
  • 需要寫/找到你自己的可可實現(讓我知道如果你不能找到任何,我已經躺在附近某處類別)

ISO解析是不難,但你必須檢查你自己的實施。可可沒有最快的字符串解析器。我必須相信它會明顯變慢(可能超過2倍)。

+0

+1好點。選擇unix時代方法的另一個有效理由是其分辨率始終低於第二個。 – pokstad 2011-03-27 20:00:25

+0

我有json格式的相同編碼,我認爲它也是unix。我怎樣才能轉換成日期格式? { 「ID」: 「ntp-a1.nict.go.jp」, 「它」:1232963971.248, 「ST」:1344328809.885, 「飛躍」:34, 「下一個」:1341100800, 「步驟」 :1 } – 2012-08-07 08:45:43

+0

這是將epoch轉換爲NSDate的可可方式:[NSDate dateWithTimeIntervalSince1970:epoch] – pokstad 2012-08-07 23:14:51