Unix Timestamp conversion for PHP Facebook event
我正在使用 Facebook PHP SDK 代表他们将事件发布到页面,但是当我从表单字段中提取日期时,我遇到了 start_time 参数的一些问题。据我了解,此参数仅接受 ISO 8601 格式日期,因此我执行了以下操作...
表单域显示日期和时间如下(例如):11/06/2013 08:00PM
我通过执行以下操作将其转换为 Javascript 中的时间戳:
1 2
| var d = new Date('11/06/2013 08:00PM'),
eventTimestamp = d.getTime(); |
吐出 1383796800000 - 以人类可读格式转换回这个时间戳是 Thu, 07 Nov 2013 04:00:00 GMT(11/6/2013 8:00:00 PM GMT-8 在我的时区。 ..)。到目前为止一切顺利!
现在问题出现了。我使用 POST 将此时间戳发送到我发布 Facebook 事件的脚本,然后将其用作我在 PHP 中执行此操作的参数:
date('c', $_POST['timestamp']);
当我运行脚本时,发布的事件的日期为(在 Facebook 事件页面上查看):1995 年 11 月 25 日,星期六。
我希望我描述得足够好。有人可以帮我吗?
编辑...
我在脚本中显示了时间戳返回的数据,有趣的事情发生了。也许我只是错过了一些东西,但是当我回显 $_POST['timestamp'] 时,我得到了:
1383796800000(正确)
但是当我回应 date('c', $_POST['timestamp']) 我得到了:
1995-11-25T12:18:08-08:00(非常不正确)
我错过了什么?
- $_POST['timestamp'] 的值是否与您应该发布的值相同?
-
我在上面编辑了我的帖子以检查值,你是对的,它们不一样。有任何想法吗?
除非我看过某些东西,否则 date() 的日期范围是"Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT"和你的时间戳高于此范围。
编辑...
你需要将它除以 1000
1
| date('c' $_POST['timestamp']/1000); |
将返回 2013-11-06T21:00:00-07:00
- 好吧,很奇怪.. 当我使用 epochconverter.com 转换时间戳时,我得到 Thu, 07 Nov 2013 04:00:00 GMT,但是当我使用 onlineconversion.com/unix_time.htm 转换它时,我得到 Tue, 10 Oct 45820 16:00:00 GMT,当我使用 4webhelp.net/us/timestamp .php 我得到 Friday, July 4th 2408, 16:00:00 (GMT)... 为什么所有三个站点都给我不同的答案?
-
我的时间戳会损坏吗?如果是,那一个站点怎么会给出我期望的日期?另外,按照我上面的方法,它怎么会损坏?
-
我是该网站的新手,并不意味着将我的回复作为答案发布,但我想通了,并在上面更新了我的答案。
-
呸!有效!现在,为了社区和任何和我有同样问题的人,我到底为什么需要除以 1000?