【问题标题】:date() expects parameter 2 to be integer, float givendate() 期望参数 2 为整数,给定浮点数
【发布时间】:2016-10-19 17:33:00
【问题描述】:

我从数据库 147836340000 获得了以下时间戳长值,我想将其转换为数据和时间。我尝试使用以下内容:

$timestamp=147836340000;
print_r(date('m/d/Y H:i:s', $timestamp));

但不幸的是,我收到以下错误:

date() 期望参数 2 为整数,给定浮点数

请就我需要做什么提出建议。

【问题讨论】:

  • 该时间戳应该用于什么日期?如果是 11 月 5 日,它可能会减少 2 个0,这是一个奇怪的数字。当我看到这个错误时,通常是 3 或 6 0s。
  • 适合我
  • 这在 php 5.6.17 中运行良好。你运行的是什么版本的php?
  • 是的,它返回09/30/6654 20:00:00
  • 您超出了 32 位 php 中 int 的可表示范围,因此该数字已转换为浮点数。很可能这是一个 javascript 时间戳,以毫秒为单位,这意味着您可以将 /1000 转换为秒。

标签: php


【解决方案1】:

可能是JS时间戳,所以需要除以1000。

你的版本:

$timestamp=147836340000;
print_r(date('m/d/Y H:i:s', $timestamp));
09/30/6654 18:00:00

试试这个(Online Demo):

$timestamp=(int) 147836340000 / 1000;
print_r(date('m/d/Y H:i:s', $timestamp));
09/08/1974 01:39:00

更多细节可以在这里找到:Timestamp between Javascript and PHP

【讨论】:

  • 我从你的例子中得到这个值先生:01/21/1970 23:04:11
  • @momori14 你用的是什么版本的PHP?查看此在线演示:3v4l.org/qdcD9
  • 我正在使用 PHP7
  • 还取决于硬件和操作系统 - 如果一切都是 64 位的,那你就可以了,如果一切都是 32 位的,那你就有问题了。
猜你喜欢
  • 2018-03-19
  • 2017-11-14
  • 2019-12-15
  • 2014-03-27
  • 1970-01-01
  • 1970-01-01
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多