2009-06-04 37 views
1

我正在管理範圍擴大的RESTful JSON數據API。目前,我們將線路上的所有日期作爲字符串「YYYY-MM-DD」返回,但我們還需要表示部分日期的概念。在JSON API中表示部分日期

我的意思是部分日期是指具有未知組件的日期值,可能是年份或月份。在我們的表示層中,這將被翻譯爲:

2009-09-03 => '3rd September 2009' 
2009-09 => 'September 2009' 
2009  => 'Undated 2009' 

這種類型的數據是否有任何先例或標準?例如,MySQL通過在日期和日期時間字段中允許00值來實現這一點 - 例如:'2009-00-00'將直接保存到MySQL日期字段,但是當由大多數編程語言的日期庫分析時,該值不會一致地轉換。

在JSON提要中,語義上表示部分日期的這種概念的最佳方式是什麼?

理想情況下,我們可以實現一個易於我們的消費者解析的解決方案,但也可以直接在文檔中解釋。

回答

4

編輯:再次考慮這一點,YYYY-MM和YYYY都是有效的ISO 8601,所以它可能會更好,只是使用它。

由於JSON是JavaScript文字語法的子集,並且JS沒有日期文字,所以沒有JSON日期(任何類型)的標準。請參閱http://msdn.microsoft.com/en-us/library/bb299886.aspx#intro_to_json_sidebarb

+0

看起來這可能是我們首選的解決方案。 (另一種方法是用年,月,日值構建JSON結構體)。我不知道這些值是有效的ISO 8601,但它確實有道理。 – maetl 2009-06-04 07:27:33

-1

你會發現你的解決方案@www.datejs.com

感謝。

+0

然後,他可能不會,因爲這是一個日期庫,而不是文字日期的標準。 – 2009-06-04 04:54:14

-1

在存儲方面,您可以通過在單獨的列中存儲年份,月份和日期並允許空值來存儲歧義。通過這種方式,您可以使用字符串連接和合並(日期'00')函數來查詢它,以便在列爲空時抓取'00'。

+0

這並沒有回答我的問題,但我很想知道是否有人建議使用單獨的年,月,日字段而不是單個日期值傳遞JSON對象。 – maetl 2009-06-04 07:28:49