2009-06-04 60 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