2016-07-23 42 views
2

這裏是我的PHP代碼轉換時刻字符串到時間戳整數PHP

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

這裏是輸出

string(13) "1468821556126" int(2147483647) 

預計輸出

string(13) "1468821556126" int(1468821556126) 

爲什麼發生這種情況,如何解決這個問題 ?

+1

有什麼問題來劃分呢? *「解決」*在這種情況下意味着什麼? – BeetleJuice

+0

'int idate(string $ format [,int $ timestamp = time()])'閱讀更多在http://php.net/manual/en/function.idate.php – ihemant360

+0

@BeetleJuice現在編輯... –

回答

2

因爲你的數量太大而不能表示爲一個整數你不能得到可靠的結果。

echo PHP_INT_MAX; //2147483647 on my system 

對於一些大如你的,如果你需要它以數字格式,將它轉換爲一個浮動,而不是一個整數

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

的在那裏,如果你想獲得一個日期,我假設這是Javascript時間,這是毫秒。要轉換爲UNIX時間戳,你這時就需要通過將其分攤1000

+0

這是工作..謝謝你的答案... :) –

1

您可能正在使用32位系統。您看到的數字是32位機器上int的最大大小。 使用浮動或更改爲64位機器。

編號:PHP Integer

+0

我如何獲得所需的輸出?我知道你在說什麼...... :) –

+0

你能否提供更多的背景知道爲什麼你需要整數?在數據類型方面,PHP非常靈活。通常情況下,你不必擔心它。 – adarshdec23

+0

@PraveenKumar你不能從'var_dump'完全得到'int(1468821556126)',因爲PHP整數不會那麼高。如果我在我的解決方案中(或按照本文所述建議)將其轉換爲浮點數(或按照此建議) – BeetleJuice

1

它的發生,因爲你的$args['startdate']爲以毫秒爲單位,則需要1000

+1

如果'$ args ['startdate']'是一個時間戳那麼這是唯一正確的答案。 '回聲(日期(「​​Y-m-d H:i:s e」,1468821556126/1000));'打印'2016-07-18 08:59:16 Europe/Bucharest'。 – axiac

+0

@axiac這可能是你要找的東西。 – adarshdec23