PHP Facebook事件的Unix时间戳转换

时间:2013-10-17 03:33:21

标签: javascript php facebook-php-sdk unix-timestamp iso8601

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

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

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

var d = new Date('11/06/2013 08:00PM'),
    eventTimestamp = d.getTime();

哪个吐出1383796800000 - 这个时间戳以人类可读的格式转换回星期四,2013年11月7日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(非常不正确)

我错过了什么?

1 个答案:

答案 0 :(得分:0)

除非我看过一些东西,否则日期()的日期范围是“星期五,1901年12月13日20:45:54 GMT到星期二,2038年1月19日03:14:07 GMT”,你的时间戳高于这个范围。

编辑...

您需要将其除以1000

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

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