我正在开发一个API,我想知道是否有人可以在以下情况下建议...
我的set服务器时间已设置为UTC,PHP时区已设置为使用UTC。我的数据库中的所有时间都保存为unix时间戳,每个用户和他们的时区一起存储在数据库中。
现在我的问题是。API应该使用用户存储的时区并在发送之前调整时间戳,还是应该发送UTC时间戳并依赖于客户端在用户看到之前从API请求调整时区?
其他主要API如何处理时间戳?
发布于 2011-06-30 22:17:34
我使用以下假设(在规范行话中):
API应该提供UTC日期时间,如果需要,客户端/消费者应该正确地对它们进行本地化。API应接受UTC日期时间,并可能接受本地化的日期时间进行设置。
我总是以以下格式提供UTC RFC3339时间戳:YYYY-MM-DD HH:MM:SSZ。来自API的响应可能如下所示:
{
'title' : 'Foo',
'due_date': '2011-12-13 12:00:00Z'
}同时,我允许客户端指定感知的日期时间。因此,我允许执行以下操作:
http://api.example.com?title=Foo&due_date=2011-12-13 13:00:00+0100 ->转换为UTC和savedhttp://api.example-com?title=Foo&due_date=2011-12-13 12:00:00Z -> UTC您可以使用UNIX时间戳来使用相同的假设(就我个人而言,我不想使用UNIX时间戳,因为它们的开始日期(1970)和结束日期(2038)是有限的)。
如果你想保存最初指定的时区,你一定要把它分开存储,但是要放在一起。我的脑海中浮现出这样的想法:
{
'title' : 'Foo',
'due_date' : {
'utc': '2011-12-13 12:00:00Z',
'converted_from' : '2011-12-13 13:00:00+0100'
}
}如果您更喜欢UNIX时间戳,请执行以下操作:
{
'title' : 'Foo',
'due_date' : {
'utc': 1326456000,
'original_offset' : 3600
}
} 发布于 2011-06-29 02:00:47
这实际上是一个不能回答的问题,但请为您的使用有意义的。
许多服务,无论好坏,总是只通信一个时区(主要是UTC)。如果这对应用程序有效,那就太好了。
然而,如果时区具有意思,那么不发送该信息显然是错误的,无论是在一个单独的片段(例如,带有时区的日期字符串)中发送,还是分开发送(例如,日期,时区)。
https://stackoverflow.com/questions/6510938
复制相似问题