如何用UNIX时间戳替换人类可读的日期字符串?

时间:2011-12-16 22:15:25

标签: php javascript unix-timestamp

我有一个非常大的txt文件javascript数组 - 对我来说太大了,不能单独编辑每个条目。它看起来像这样:

["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 个答案:

答案 0 :(得分: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";
}

更新:刚刚意识到你说你的数据是在一个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);
}

答案 1 :(得分: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());
}