Вычтите время на определенных строках, используя php - PullRequest
0 голосов
/ 17 июля 2010

Используя php, я бы хотел вычесть / минус два раза; каждый раз в отдельном документе и после этого php записывает результат (Результат после вычитания двух раз) в другом текстовом документе или в HTML-документе без HTML-тегов, только текст. Вычтенные два раза определяют, как долго определенный игрок играл в игру, для которой этот сценарий будет использоваться. Кроме того, когда я заявляю, что сценарий должен вычитаться два раза, то есть фактически для одного игрока, поэтому в целом должно быть вычитано более двух раз; в зависимости от того, сколько людей на самом деле играют в игру.

Если вы посмотрите на следующее ниже, это текстовый файл, содержащий имя пользователя игрока, а также местное время для игрока, за которым следуют другие цифры, которые не имеют значения в этом случае:

Текстовый файл называется «begin.txt»:

"AULLAH1" "07.07.2010 15:28" "55621454" "123456" "123456.00"

"ИМЯ ПОЛЬЗОВАТЕЛЯ" "03.07.2010 18:21" "55621454" "123456" "123456.00"

"AULLAH1" "07.07.2010 15:05" "55621454" "189450" "123456.00"

"SUPREMEGAMER" "08.07.2010 18:42" "55621454" "123456" "123456.00"

Есть две записи имени пользователя "AULLAH1", так как этот игрок играл в игру дважды. Следующая запись в первой строке - «01/07/2010 15:28», которая является датой и текущим временем для человека «AULLAH1». Другие данные после даты и времени не имеют значения, поэтому их можно игнорировать.

В другом текстовом документе под названием «end.txt» находятся следующие данные в том же формате, что и в предыдущем текстовом файле:

"AULLAH1" "07.07.2010 15:54" "55621454" "123456" "123456.00"

"ИМЯ ПОЛЬЗОВАТЕЛЯ" "03.07.2010 18:49" "55621454" "123456" "123456.00"

"AULLAH1" "07.07.2010 15:32" "55621454" "189450" "123456.00"

Разница в этом текстовом файле заключается в том, что нет игрока с названием «SUPREMEGAMER», так как этот игрок не смог закончить игру. Также время отличается для тех пользователей, которым удалось закончить игру. Игрок "AULLAH1" также указан дважды, так как этот игрок дважды закончил эту игру.

Я бы хотел, чтобы скрипт php искал в файле end.txt последнюю запись имени пользователя «AULLAH1» и снова получил всю строку после этого, выполнил поиск последней записи «AULLAH1» в файле begin.txt, а затем вычтите время. После вычитания я бы хотел, чтобы имя пользователя, а также время записывались в другом текстовом документе или в HTML-документе без HTML-тегов, а просто в текст (как было указано ранее). Таким образом, это покажет только время, отведенное для пользователя «AULLAH1», поэтому я бы хотел, чтобы этот процесс выполнялся для каждого имени пользователя в документе end.txt.

Вся помощь приветствуется, и я с нетерпением жду ваших ответов; благодарю вас. :) Если я ничего не объяснил четко и / или вы хотите, чтобы я объяснил более подробно, пожалуйста, ответьте. :)

1 Ответ

1 голос
/ 17 июля 2010

Я не собираюсь обращаться к поиску текстового файла здесь.Допустим, в конечном итоге вы получаете время начала и окончания вместе.Получить разницу между ними довольно просто.

(Обратите внимание, я думаю, что вы изменили время. Время в файле "end" всегда меньше времени в файле "begin", иэто, вероятно, не правильно. Кроме того, вы, похоже, храните даты в формате ДД / ММ / ГГГГ, что в моих примерах может не анализируется правильно, потому что это может быть неоднозначным в любой день до 13 числа.вместо этого я хочу сохранить их в формате ГГГГ-ММ-ДД, что совершенно недвусмысленно.)

Вот способ 1, используя простые старые метки времени Unix.

// First we have our times in a human readable format. 
// Let's make them into unix timestamps
$start_time = strtotime('01/07/2010 15:28');
$end_time = strtotime('01/07/2010 15:54');
$difference_in_seconds = $end_time - $start_time;
// If you need the difference in minutes or hours, you'll need to 
// do the math yourself.
echo "That turn took {$difference_in_seconds} seconds to complete.";

Вот способ 2, используя PHPновые DateTime и DateInterval классы.Это будет работать только в PHP 5.3 или лучше.

// We have our times in human readable format.
// Let's make them into DateTimes
$start_time = new DateTime('01/07/2010 15:28');
$end_time = new DateTime('01/07/2010 15:54');
$interval = $end_time->diff($start_time, true);
echo "That turn took " . $interval->format('%h hours, %i minutes and %s seconds.');
...