【问题标题】:convert timestamp string to timestamp integer php [duplicate]将时间戳字符串转换为时间戳整数php [重复]
【发布时间】:2016-11-27 02:11:15
【问题描述】:

这是我的php代码

var_dump($args['startdate']); 
var_dump((int)$args['startdate']);die(); 

这是输出

string(13) "1468821556126" int(2147483647)

预期输出

string(13) "1468821556126" int(1468821556126)

为什么会发生这种情况以及如何解决这个问题?

【问题讨论】:

  • 有什么问题? "resolve" 在这种情况下是什么意思?
  • int idate ( string $format [, int $timestamp = time() ] )php.net/manual/en/function.idate.php阅读更多内容
  • @BeetleJuice 立即查看编辑...
  • @PraveenKumar 谢谢。我现在知道了。我已经写了答案

标签: php


【解决方案1】:

您无法获得可靠的结果,因为您的数字太大而无法表示为整数。

echo PHP_INT_MAX; //2147483647 on my system

对于像您这样大的数字,如果您需要数字格式,请将其转换为浮点数而不是整数

echo floatval('1468821556126'); //1.46882155613E+12

从那里,如果您要获取日期,我假设这是 Javascript 时间,以毫秒为单位。要转换为 Unix 时间戳,您需要将其除以 1000。

【讨论】:

  • 它正在工作.. 感谢您的回答... :)
【解决方案2】:

这是因为您的 $args['startdate'] 以毫秒为单位,您需要将其除以 1000

【讨论】:

  • 如果$args['startdate'] 是一个时间戳,那么这是唯一正确的答案。 echo(date("Y-m-d H:i:s e", 1468821556126/1000)); 打印 2016-07-18 08:59:16 Europe/Bucharest
  • @axiac 这可能是操作人员正在寻找的。​​span>
【解决方案3】:

您可能使用的是 32 位系统。您看到的数字是 32 位机器上 int 的最大大小。 使用float或者换成64bit的机器。

参考:PHP Integer

【讨论】:

  • 我怎样才能得到想要的输出??我已经知道你在说什么了...... :)
  • 您能否提供更多关于为什么需要整数的上下文? PHP 在数据类型方面非常灵活。通常情况下,您不必担心。
  • @PraveenKumar 你不能从var_dump 得到准确的int(1468821556126),因为PHP 整数不会那么高。像我在我的解决方案中所做的那样转换为浮点数(或者按照这个建议)
  • @adarshdec23 我只想从中找到日期...
  • @adarshdec23 echo date("Y-m-d",strtotime($args['startdate'])); 输出为 1970-01-01.... ;)
猜你喜欢
  • 2012-02-15
  • 2017-01-18
  • 2020-11-22
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
  • 1970-01-01
相关资源
最近更新 更多