728x90
시간을 비교해서 입장시간이 되었을때 오픈을 해야 하는 경우가 종종 있다. Date Time 을 이용해서 php 에서는 아래와 같이 비교해 볼 수 있다. 날짜 형식에 맞게 $cd_date, $cd_time 값을 맞춰 넣어야 결과값이 잘 도출 되는 점을 유의해야 한다.
$cd_date = "2023-09-16";
$cd_time = "10:00";
// 현재 날짜와 시간을 가져옵니다.
$currentDateTime = new DateTime();
// $cd_date와 $cd_time을 DateTime 객체로 변환합니다.
$cdDateTime = new DateTime($cd_date . ' ' . $cd_time);
// 현재 시간이 강의실 입장 가능한 시간 이후인지 확인합니다.
$isEntryAllowed = $currentDateTime >= $cdDateTime;
// true 또는 false 값을 반환합니다.
if ($isEntryAllowed) {
return true;
} else {
return false;
}
Date Time 으로 생각보다 간단하게 시간 비교는 가능하다.
아래 코드는 특정일자를 기준으로 월요일, 화요일 처럼 특정 요일별로 날짜를 증가하며 이후 일자를 계산 하는 로직이다.
2023-09-18 일을 시작으로 10회 차 월, 화 요일만 해당하는 날짜만 구하는 함수이다.
$ci_start_date = "2023-09-18";
$ord_total_times = 10;
// 1: 월요일, 2: 화요일 , 3: 수요일이라고 가정했을때
$days = array(1, 2);
$daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
$startDateTime = new DateTime($ci_start_date); // 시작 날짜
$classDates = [];
$currentDate = clone $startDateTime;
while (count($classDates) < $ord_total_times) {
if (in_array((int)$currentDate->format('N'), $days)) {
array_push($classDates, clone $currentDate);
}
$currentDate->modify('+1 day');
}
foreach ($classDates as $date)
echo $date->format('Y-m-d')."<br>";
[결과값]
2023-09-18
2023-09-19
2023-09-25
2023-09-26
2023-10-02
2023-10-03
2023-10-09
2023-10-10
2023-10-16
2023-10-17
728x90
'PHP' 카테고리의 다른 글
php 암호화 복호화 가능한 AES (0) | 2024.03.14 |
---|---|
php 에서 sass 파일 css 로 컴파일 하기 (0) | 2024.03.13 |
php form 태그 다중 checkbox 존재여부 체크 isset (implode, explode) (0) | 2024.01.25 |
php 암호화 복호화 AES (Advanced Encryption Standard) 예제 (0) | 2024.01.24 |
php 서명 받고 이미지로 저장하기 canvas 이미지로 저장 (0) | 2023.11.09 |