2011-12-16 66 views
1

我有一個非常大的txt文件javascript數組 - 對我來說太大了,不能單獨編輯每個條目。它看起來像這樣:如何用UNIX時間戳替換人類可讀的日期字符串?

["12/1/2011 00:00",15848],["12/1/2011 01:00",15108],["12/1/2011 02:00",14643],["12/1/2011 03:00",14265], &c. 

如何通過PHP傳遞此文件來更改所有日期並寫入新文件?我想我需要使用strptime()strtotime(),但我不知道如何繼續。

日期格式爲Month/Day/Year

編輯:我結束了從CSV文件重新創建數組。這是我用來防止任何人感興趣的代碼。謝謝您的幫助。

$handle = fopen("stuff.csv", "r"); 

while(($data = fgetcsv($handle, ",")) !== FALSE) { 
    echo "[" . strtotime($data[0]) . ", " . $data[1] . "],<br />"; 
} 

回答

2

匹配使用正則表達式的字符串中的所有日期,然後對結果使用的strtotime():

$str = '["12/1/2011 00:00",15848],["12/1/2011 01:00",15108],["12/1/2011 02:00",14643],["12/1/2011 03:00",14265]'; 
$p = '#(\d+/\d+/\d{4}\s\d{2}:\d{2})#'; 
preg_match_all($p, $str, $matches); 

foreach ($matches[1] as $m) { 
    echo strtotime($m) . "\n"; 
} 

UPDATE:剛纔意識到你說你的數據是在一個javascript數組中。您可以在JS很容易地處理這個問題,以及:

var new_times = []; 
var times = [["12/1/2011 00:00",15848],["12/1/2011 01:00",15108],["12/1/2011 02:00",14643],["12/1/2011 03:00",14265]]; 

for(i=0; i < times.length; i++) { 
    var d = new Date(times[i][0]); 
    var new_arr = [(d.getTime()/1000), times[i][1]]; 
    new_times.push(new_arr); 
} 
+0

@Sam Nabi我只是意識到你有一個javascript數組...你是否將它傳遞給一個JSON字符串的PHP? – rdlowrey

+0

謝謝!這會讓我走。 PHP字符串有大小限制嗎?我的文件有數百萬個字符。 –

+0

我只是將它包含在一個php文件中。它沒有被轉換成JSON。 –

0

使用JavasScript

var times = [["12/1/2011 00:00",15848],["12/1/2011 01:00",15108],["12/1/2011 02:00",14643],["12/1/2011 03:00",14265]]; 
//var d = new Date(year, month, day, hours, minutes, seconds, milliseconds); 
for(i in times) { 
    var time = times[i][0].split(/\/|\s|:/i); 
    console.log(time); 
    date = new Date(time[2], time[0], time[1], time[3], time[4]); 
    console.log(date.getTime()); 
} 
+2

不能打電話日期直接日期時間,日期預計時間戳 – codeling

+0

@nyarlathotep:你說得對,但經過進一步的我已經刪除的PHP部分我的答案完全是因爲可以在JavaScript中達到的結果 –

相關問題