시간 데이터를 처리 할 때, 특히 두 시점 간의 차이를 계산해야 할 때, 우리는 종종 문제가 발생합니다. 시간 순서는 불확실하여 음의 간격으로 이어질 수 있습니다. 우리가 두 시점 사이의 "거리"에만 관심이있는 경우, 누가 앞에 있고 누가 뒤에 있는지가 아니라 ABS () 함수를 사용하여 절대 값을 계산해야합니다.
ABS () 는 PHP의 수학적 함수이며 그 기능은 매우 간단합니다. 숫자의 절대 값을 반환합니다. 즉, 입력이 음수 인 경우 양수로 변환합니다.
시간을 처리 할 때 strtotime () 함수를 사용하여 시간 문자열을 UNIX 타임 스탬프 (1970 년 1 월 1 일부터 시작하는 초 수)로 변환 한 다음 두 타임 스탬프의 차이를 계산 한 다음 ABS ()를 사용하여 절대 값을 얻을 수 있습니다. 이러한 방식으로, 시간 시퀀스에 관계없이, 최종 결과는 "긍정적 인"시간 간격입니다.
예를 살펴 보겠습니다.
<code> $ start_time = '2025-05-20 14:30:00'; $ end_time = '2025-05-25 10:00:00'; // 타임 스탬프로 변환합니다
$ start_timestamp = strtotime ($ start_time);
$ end_timestamp = strtotime ($ end_time);
// 절대 시차 계산 (초)
$ interal_seconds = abs ($ end_timestamp- $ start_timestamp);
// 며칠, 시간, 분으로 변환합니다
$ days = floor ($ interval_seconds / (60 * 60 * 24));
$ 시간 = 바닥 (($ interval_seconds % (60 * 60 * 24)) / (60 * 60));
$ 분 = 바닥 (($ interval_seconds % (60 * 60)) / 60);
echo "두 번의 간격은 다음과 같습니다.
</코드>
출력은 다음과 같습니다.
두 번 사이의 간격은입니다:4 하늘 19 시간 30 분
$ start_time 및 $ end_time을 교체하더라도 출력이 변경되지 않습니다.
이 방법은 사용자 입력, 로깅 분석, 작업 예약 검사 등과 같은 응용 프로그램 시나리오를 처리 할 때 매우 유용합니다. 예를 들어, 일부 시스템에서는 사용자의 마지막 로그인 시간과 현재 시간 간의 시차를 계산해야 할 수도 있습니다. 현재, 당신은 어느 시점이 있는지 확실하지 않습니다. ABS ()를 사용하면 이러한 불확실성을 피할 수 있습니다.
이 논리를 더 캡슐화 해야하는 경우 일반적인 기능을 만들 수도 있습니다.
<code> 함수 gettimeDifference ($ time1, $ time2) {$ timestamp1 = strtotime ($ time1); $ timestamp2 = strtotime ($ time2); $interval = abs($timestamp1 - $timestamp2);
$days = floor($interval / (60 * 60 * 24));
$hours = floor(($interval % (60 * 60 * 24)) / (60 * 60));
$minutes = floor(($interval % (60 * 60)) / 60);
return [
'days' => $days,
'hours' => $hours,
'minutes' => $minutes
];
}
// 예제 사용
$ 차이 = getTimeDifference ( '2025-05-01 10:00:00', '2025-04-28 08:30:00');
echo "시차는 다음과 같습니다. {$ difference [ 'days']} days {$ difference [ 'homer']} 시간 {$ difference [ 'ming']} mings";
</코드>
또한 로그 분석 백엔드 또는 프로젝트 진행 상황 통계 도구와 같은 시간 로그가있는 웹 응용 프로그램을 구축하는 경우 이러한 처리 로직을 도구 클래스로 캡슐화하거나 JSON으로 출력하여 API를 통해 사용하기 위해 프론트 엔드에 제공 할 수도 있습니다.
<code> 헤더 ( 'Content-type : application/json'); $ time1 = $ _get [ 'start'] ?? '2025-01-01 00:00:00';
$ time2 = $ _get [ 'end'] ?? '2025-01-02 00:00:00';
$ result = getTimeDifference ($ time1, $ time2);
echo json_encode ([[
'상태'=> '성공',
'시작'=> $ time1,
'end'=> $ time2,
'차이'=> $ 결과
]);
</코드>
When accessing for example <code> https://gitbox.net/time_diff.php?start=2025-05-01+10:00:00&end=2025-04-30+08:00:00 </code>, the returned JSON structure is a time-difference JSON structure, which is very suitable for the front-end and back-end separation architecture.
요컨대, ABS () 는 겉보기에 간단하지만 매우 실용적인 도구입니다. 시간 데이터를 처리 할 때 부정적인 값 오류를 효과적으로 피할 수있어 결과가보다 직관적이고 논리적으로 만듭니다. 모든 PHP 개발자가 마스터 해야하는 것은 작은 트릭입니다.