我正在使用运费api(使用fedex),我需要填写的一些字段以某种格式询问日期时间(我听说有些人称之为“zulu”,它看起来像这样:2006-06-26T17:00:00-0400)(顺便说一下,在php中格式化这个的好方法)
我希望能够通过使用邮政编码来做到这一点。因此,如果我知道用户的邮政编码是12345,并且他们说他们想要在早上9到12之间选择一个包裹,那么我可以使用正确的偏移量对其进行格式化。
那么,我是否需要将偏移或时区设为该邮政编码?我不确定我完全理解其中的区别。另外,如果他们想要在9到12之间,我是否只是将时间戳的一部分说成9:00:00以及偏移?
感谢您提出任何指示。
答案 0 :(得分:4)
这是一个source for a free dataset (Excel format),用于映射邮政编码和时区以及州和城市。邮政编码是粒度匹配时区和夏令时变化的理想选择,因为像印第安纳州这样的特殊情况,不同的县决定是否观察夏令时。
就实施此数据而言:请仔细阅读您的FedEx API。这必须在他们的文档中明确说明。我猜你真正需要做的就是研究这个话题。不要急于求成。慢慢来,因为你想在第一时间做到这一点。我作为一名初级开发人员参加了几个项目,其中mgmt忽略了时区,后来付出了惨重的代价。
为了帮助您入门:Zulu time是GMT和UTC的同义词的同义词,这些术语都意味着类似的东西,并且往往可以互换使用。使用时,它们意味着无论日期时间有多少都与某个共同的参考点有关,而这个参考点恰好贯穿格林威治(因此GMT =格林威治标准时间。)
无论您做什么,无论您存储数据,请确保始终可以从值中计算zulu / utc / gmt,或者更好的是,存储zulu并调整客户端时区的显示。有几种方法可以去。这里is one。它是特定于Sql Server的,但概念和策略应该可以映射到您正在使用的任何类型的db或持久存储。
对于问题的最后部分,您应该单独存储两个时间。这两个词意味着两个值,这是正确的方法。除了更完整之外,这种类型的解决方案还可以帮助您解决“如果开始时间是晚上11点,结束时间是凌晨2点的夏令时开关怎么办?”
祝你好运!P.S。这是interesting little read in an SO article。它适用于MS堆栈,但仍然很有趣,并支持我的一些断言。例如。更好地存储UTC / GMT然后转换......但是通过阅读答案,它们都有一些有效点并且很简短。
答案 1 :(得分:0)
为了将邮政编码转换为时区,不幸的是,你自己就是这样。然而,一个快速的谷歌搜索发现了我,这可能会让你感兴趣:
http://www.webservicex.net/uszip.asmx
至于格式化,你很幸运。 PHP 5内置了date format:
date('c');