Время / дата, как сделать из одного числа и сделать математические вещи с ним и до конца дня - PullRequest
0 голосов
/ 22 января 2019

Привет, ребята, так что на веб-странице я получаю переменную даты / времени, которая выглядит как 2018-12-05 07:19:54, и я получаю IN или EXIT. Вот предостережение, если человек входит или выходит, и как долго он находился, и мне нужно разделять каждый вход от 2018-12-05 00:01 до 2018-12-05 23:59:59.

Кстати, файл выглядит так

Кто-нибудь знает, как заниматься математикой? Пример (2018-12-05 07:19:54)-(2018-12-05 07:50:05) = 31min В конце концов, на работе ему будет 31мин, и он проведет совещание до конца дня. Кто-нибудь знает какие-либо идеи, как проводить такие добрые тренировки?

Ответы [ 3 ]

0 голосов
/ 22 января 2019

PHP Date Time класс имеет метод с именем diff . Этот метод возвращает объект DateInterval , вы можете легко извлечь значения года, месяца, дня ... из этого объекта.

0 голосов
/ 22 января 2019

Так вот, что я сделал, и он рассчитывает время от входа до выхода

<?php
error_reporting(0); //disable all errors and notices
require_once "Classes/PHPExcel.php";
		$chosenPerson = $_GET["dla_darbuotojo_pasirinkimas"];
		$tmpfname = "visi.xls";
		$excelReader = PHPExcel_IOFactory::createReaderForFile($tmpfname);
		$excelObj = $excelReader->load($tmpfname);
		$worksheet = $excelObj->getSheet(0);
		$lastRow = $worksheet->getHighestRow();
		$aInT = "Administracija[In]";
		$vInT = "Vartai[In]";
		$aExT = "Administracija[Exit]";
		$vExT = "Vartai[Exit]";
		
		$goingIn = false;
		$goingExt = false;

		$goingInValue = 0;
		$goingExtValue = 0;

		echo "<table>";
		for ($row = 1; $row <= $lastRow; $row++) {
			if ($chosenPerson ==  ($worksheet->getCell('D'.$row)->getValue()) ) {
				if (!$goingIn or !$goingExt) {
					//checking if the person alredy went in
					if ((($worksheet->getCell('G'.$row)->getValue()) == $aInT) or (($worksheet->getCell('G'.$row)->getValue()) == $vInT)) {
						//if the person went in
						$goingIn = true;
						echo "<tr><td>";
						$goingInValue = $worksheet->getCell('F'.$row)->getValue();
						echo "</td><td>";
						echo $worksheet->getCell('D'.$row)->getValue();
						echo "</td><td>";
						echo $worksheet->getCell('F'.$row)->getValue();
						echo "</td><td>";
						echo $worksheet->getCell('G'.$row)->getValue();
						echo "</td><td>";
						echo "</td><td>";
						echo "</td><td>";
						
						for ($erow= $row +1; ; $erow++){
							if ($chosenPerson ==  ($worksheet->getCell('D'.$erow)->getValue()) ) {
								if ((($worksheet->getCell('G'.$erow)->getValue()) == $aExT) or (($worksheet->getCell('G'.$erow)->getValue()) == $vExT)) {
									$goingExtValue = $worksheet->getCell('F'.$erow)->getValue();
									$goingExt=true;
									
									echo $worksheet->getCell('D'.$erow)->getValue();
									echo "</td><td>";
									echo $worksheet->getCell('F'.$erow)->getValue();
									echo "</td><td>";
									echo $worksheet->getCell('G'.$erow)->getValue();
									echo "</td><td>";
									
									$date1=date_create($goingInValue);
									$date2=date_create($goingExtValue);
									$diff=date_diff($date2,$date1);
									echo $diff->format("'%h Valandos %i Minutes %s Sekundes'");
									echo "</td><tr>";
									$goingIn = false;
									$goingExt = false;
									break;
									$row=$erow;
								}
							}							
						}
					} 
				}
				
				
				//echo "<tr><td>";
				//echo $worksheet->getCell('D'.$row)->getValue();
				//echo "</td><td>";
				//echo $worksheet->getCell('F'.$row)->getValue();
				//echo "</td><td>";
				//echo $worksheet->getCell('G'.$row)->getValue();
				//echo "</td><tr>";
			}
		}
		echo "</table>";
		

?>
0 голосов
/ 22 января 2019

Вы можете использовать функцию date_diff в PHP

Например:

$date1=date_create("2018-12-05  07:19:54");
$date2=date_create("2018-12-05  07:50:05");
$diff=date_diff($date1,$date2);
echo $diff->format("'%i Minute %s Seconds'");

Для проверки кода здесь

Проверьте здесь для получения полного формата ответа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...