accepted way to send date and time with timezone parameter in URL
在OData / REST服务中,我想允许日期参数
例:
1 | GET /events?startDate=XXX&endDate=YYY |
问题:
在@ user7294900的答案中链接的W3C日期格式是一个不错的选择。您只需要注意字符
您还可以使用ISO 8601格式,它允许不带
实际上,W3C日期格式是ISO 8601的配置文件(或子集),因此两者都是不错的选择,因为大多数现代语言和系统都支持ISO格式。
How/Should I consider adding timezone (or UTC offset)?
首先,时区和偏移量不是一回事(尽管它们彼此相关)。
偏移量与UTC的差异:
时区是一个区域在其历史中具有,已经和将要具有的所有不同偏移的集合,包括这些变化发生的确切日期和时间。
如果我只有一个像
Java使用IANA时区名称(始终采用
避免使用3个字母的缩写(如
如果您的应用程序将处理不同区域的日期和时间,我建议使用UTC内部工作(因此日期将类似于
如果您不需要使用不同的时区,或者不需要知道事件的确切时刻,则可以使用"本地日期"(没有时区也不偏移)。这取决于您的要求。
What is expected if timezone was not added?
如果使用本地日期/时间(没有时区/偏移量),则可能会出现"奇怪"或意外结果,具体取决于代码处理日期的方式。
假设我有日期/时间
示例:如果我认为此日期在伦敦,它将相当于UTC的晚上9点。但如果本地日期在洛杉矶,它将相当于UTC中的
因此,如果未使用偏移量,您可能会得到这些结果,但这当然取决于您的代码对日期的处理方式。如果你把它当作当地的日期和时间,那应该没有问题。如果您正在考虑UTC和/或不同的时区进行计算,则可能存在问题。
请参阅万维网联盟(W3C)日期格式,您可以采用YYYY-MM-DDThh格式发送:mm:ss.sTZD
e.g 1997-07-16T19:20:30.45+01:00
没有秒:
YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)
1994-11-05T08:15:30-05:00 corresponds to November 5, 1994, 8:15:30 am,
US Eastern Standard Time.1994-11-05T13:15:30Z corresponds to the same instant.