将时间戳字符串转换为时间戳整数php

将时间戳字符串转换为时间戳整数php,php,Php,这是我的php代码 var_dump($args['startdate']); var_dump((int)$args['startdate']);die(); 这是输出 string(13) "1468821556126" int(2147483647) 预期产量 string(13) "1468821556126" int(1468821556126) 为什么会发生这种情况以及如何解决这个问题 您可能正在使用32位系统。您看到的数字是32位机器上int的最大大小。 使用浮点或更改为

这是我的php代码

var_dump($args['startdate']); 
var_dump((int)$args['startdate']);die(); 
这是输出

string(13) "1468821556126" int(2147483647)
预期产量

string(13) "1468821556126" int(1468821556126)

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

您可能正在使用32位系统。您看到的数字是32位机器上int的最大大小。 使用浮点或更改为64位机器


Ref:

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

echo PHP_INT_MAX; //2147483647 on my system
对于像您这样大的数字,如果需要数字格式,请将其转换为浮点而不是整数

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

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

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

有什么问题?在此上下文中,“resolve”是什么意思?
int-idate(string$format[,int$timestamp=time()])
请阅读@killetJuice的更多内容,请参阅立即编辑…@PraveenKumar,谢谢。我现在明白了。我已经写了一个答案,我怎样才能得到想要的输出??我已经知道你在说什么了……:)您能否提供一点更多的上下文来解释为什么需要integer?PHP在数据类型方面非常灵活。通常情况下,您不必担心它。@PraveenKumar您无法从
var_dump
中准确地获取
int(1468821556126)
,因为PHP整数不会达到那么高。转换为浮点数,就像我在我的解决方案中所做的那样(或者像在这个解决方案中建议的那样)@adarshdec23我只想从中获取日期…@adarshdec23
echo date(“Y-m-d”,strottime($args['startdate'))输出为
1970-01-01
…;)它正在工作。。谢谢你的回答……:)如果
$args['startdate']
是时间戳,则这是唯一正确的答案<代码>回声(日期(“Y-m-d H:i:SE”,1468821556126/1000))打印
2016-07-18 08:59:16欧洲/布加勒斯特
@axiac这可能是op想要的。