2012-05-03 158 views
6

我該如何將這樣的一個Java時間戳1335997853142轉換爲PHP可以讀取的格式? 1335997853142應該是02 May 2012 22:30:53如何將java時間戳轉換爲php時間戳?

但是什麼都我嘗試,我得到錯誤或PHP說1970-01-01 01:00:002038-01-19 04:14:07

PLS幫助!我正在尋找超過1.5小時的解決方案!

+1

使用'java.util.Calendar'。這就是這個偉大的問題。 – Torious

+1

Java時間戳是從linux時間開始的毫秒數,php是從linux時間開始的秒數。將java時間除以1000以獲得php時間。 – Jordonias

+0

@Torious:不想使用java - 我將1220個值從一個xml文件轉換爲mysql到mysql – user1373728

回答

6

它不是Java的時間戳,它是毫秒,因爲epoch(1970-01-01 00:00:00 GMT)

其中php supports too除秒所以下面應該在PHP工作:

date('choose your format', javaMilliseconds/1000); 
+0

,因爲Mark Reed也說date_default_timezone_set(「UTC」); – pstanton

0

這是在microtime中的時間戳

使用

$time = date("whatever you need", $javatime/1000); 
+0

我用過這個: date('Y-m-d H:i:s',$ values ['date']/1000); // 1970-01-25 21:31:23 this: date('Ymd H:i:s',(int)$ values ['date']/1000)// 1970-01-25 21:31 :23 this: date('U = Ymd H:i:s',(int)$ values ['date'])// 2038-01-19 04:14:07 this: date('U = Ymd H:i:s',(int)$ values ['date'])//警告:date()期望參數2很長 wtf是錯誤的?!? – user1373728

1

Java爲您提供了一個以毫秒爲單位的時間戳。 PHP使用的Unix秒,除以1000:

print(date("r", 1335997853142/1000) 
1

你有時間戳以毫秒爲單位時,應該在幾秒鐘內

$java_time = 1335997853142; 
$php_time = $java_time/1000; 
$today = date("d M Y G:i:s", $php_time); 

輸出

02 May 2012 22:30:53 
+0

這給出了數組中的所有值:1970年1月25日20時31分23秒 – user1373728

+0

我錯過了一些分號,現在修復了 – Jordonias

+0

您確定您正在從xml中正確檢索條目嗎? – Jordonias

7

PHP時間戳秒,不是毫秒。

echo gmdate("d M Y H:i:s",1335997853); 

輸出02 May 2012 22:30:53

+0

該死的!好吧,現在可以工作 - 與你的所有soloutions!謝謝!! 問題是:字符串有空格(不知道爲什麼!)。 trim()後一切正常。 對不起,但謝謝大家! – user1373728

1

日期/時間:4月/ 08/2014下午12時十七分42秒UTC

Java的時間戳:1396959462222

PHP時間戳:1396959462

除以1000沒有給出完全正確的答案因爲它會給出雙倍或浮動值,即1396959462.222這不是我們想要的。我們這裏需要一個整數像1396959462.所以正確的方式轉換成Java的時間戳PHP時間戳是通過使用INTVAL():

$php_timestamp = intval($java_timestamp/1000); 

在一個真實的例子,在我的Android應用程序之一,我送的Java時間戳一個PHP服務器,我是這樣做的,如上所述。另外,良好的安全習慣,我添加了preg_replace(),以確保如果有人加入這一領域的黑客代碼,它被刪除:

$php_timestamp = intval(preg_replace('/[^0-9]/', '', $java_timestamp)/1000); 
1

日期需要整數格式的時間戳。所以我認爲你應該刪除3最後一個數字。不使用除法,因爲它會返回浮點數。