首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >API方法论。使用时区

API方法论。使用时区
EN

Stack Overflow用户
提问于 2011-06-29 01:54:49
回答 2查看 242关注 0票数 1

我正在开发一个API,我想知道是否有人可以在以下情况下建议...

我的set服务器时间已设置为UTC,PHP时区已设置为使用UTC。我的数据库中的所有时间都保存为unix时间戳,每个用户和他们的时区一起存储在数据库中。

现在我的问题是。API应该使用用户存储的时区并在发送之前调整时间戳,还是应该发送UTC时间戳并依赖于客户端在用户看到之前从API请求调整时区?

其他主要API如何处理时间戳?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-30 22:17:34

我使用以下假设(在规范行话中):

API应该提供UTC日期时间,如果需要,客户端/消费者应该正确地对它们进行本地化。API应接受UTC日期时间,并可能接受本地化的日期时间进行设置。

我总是以以下格式提供UTC RFC3339时间戳:YYYY-MM-DD HH:MM:SSZ。来自API的响应可能如下所示:

代码语言:javascript
复制
{
  'title' : 'Foo',
  'due_date': '2011-12-13 12:00:00Z'
}

同时,我允许客户端指定感知的日期时间。因此,我允许执行以下操作:

  1. http://api.example.com?title=Foo&due_date=2011-12-13 13:00:00+0100 ->转换为UTC和saved
  2. http://api.example-com?title=Foo&due_date=2011-12-13 12:00:00Z -> UTC

您可以使用UNIX时间戳来使用相同的假设(就我个人而言,我不想使用UNIX时间戳,因为它们的开始日期(1970)和结束日期(2038)是有限的)。

如果你想保存最初指定的时区,你一定要把它分开存储,但是要放在一起。我的脑海中浮现出这样的想法:

代码语言:javascript
复制
{
  'title' : 'Foo',
  'due_date' : {
                'utc': '2011-12-13 12:00:00Z',
                'converted_from' : '2011-12-13 13:00:00+0100'
  }
}

如果您更喜欢UNIX时间戳,请执行以下操作:

代码语言:javascript
复制
{
  'title' : 'Foo',
  'due_date' : {
               'utc': 1326456000,
               'original_offset' : 3600
  }
}                  
票数 1
EN

Stack Overflow用户

发布于 2011-06-29 02:00:47

这实际上是一个不能回答的问题,但请为您的使用有意义的

许多服务,无论好坏,总是只通信一个时区(主要是UTC)。如果这对应用程序有效,那就太好了。

然而,如果时区具有意思,那么不发送该信息显然是错误的,无论是在一个单独的片段(例如,带有时区的日期字符串)中发送,还是分开发送(例如,日期,时区)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6510938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档