【问题标题】:Unix Timestamp conversion for PHP Facebook eventPHP Facebook 事件的 Unix 时间戳转换
【发布时间】:2013-10-17 03:33:21
【问题描述】:

我正在使用 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 在我的时区...)。到目前为止一切顺利!

现在问题出在这里。我使用 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'] 的值是否与您发布的值相同?
  • 我在上面编辑了我的帖子以检查值,你是对的,它们不一样。有什么想法吗?

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


【解决方案1】:

除非我看过一些东西,否则 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

【讨论】:

  • 好吧,很奇怪.. 当我使用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?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-08
  • 2012-06-16
  • 1970-01-01
  • 2017-03-30
  • 2016-04-03
  • 1970-01-01
相关资源
最近更新 更多