Как я могу заменить читаемые человеком строки даты на метки времени UNIX? - PullRequest
1 голос
/ 17 декабря 2011

У меня очень большой массив javascript txt-файла - слишком большой, чтобы я мог редактировать каждую запись отдельно. Это выглядит так:

["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 ]

2 голосов
/ 17 декабря 2011

Сопоставьте все даты в строке с регулярным выражением, затем используйте 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);
}
0 голосов
/ 17 декабря 2011

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());
}
...