0

我正在使用 Facebook PHP SDK 代表他们将事件发布到页面,但是start_time当我从表单字段中提取日期时,参数出现了一些问题。据我了解,这个参数只接受 ISO 8601 格式的日期,所以我做了以下......

表单字段显示日期和时间如下(例如):11/06/2013 08:00PM

我通过执行以下操作将其转换为 Javascript 中的时间戳:

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 in my timezone...)。到目前为止,一切都很好!

现在这就是问题所在。我使用 POST 将此时间戳发送到我发布 Facebook 事件的脚本,然后将其用于我在 PHP 中执行此操作的参数:

date('c', $_POST['timestamp']);

当我运行脚本时,发布的事件的日期为(在 Facebook 事件页面上查看):Saturday, November 25, 1995

我希望我描述得足够好。有人可以帮我吗?

编辑...

我在脚本中显示了时间戳返回的数据,有趣的事情发生了。也许我只是错过了一些东西,但是当我回应时,我得到$_POST['timestamp']了:

1383796800000(正确的)

但是当我回应时,我得到date('c', $_POST['timestamp'])了:

1995-11-25T12:18:08-08:00(非常不正确)

我错过了什么?

4

1 回答 1

0

除非我看过一些东西,否则 date() 的日期范围是“格林威治标准时间 1901 年 12 月 13 日星期五 20:45:54 至格林威治标准时间 2038 年 1 月 19 日星期二 03:14:07”,并且您的时间戳高于此范围。

编辑...

您需要将其除以1000

date('c' $_POST['timestamp']/1000);

这将返回2013-11-06T21:00:00-07:00

于 2013-10-17T04:16:07.337 回答