티스토리 뷰
반응형
코딩을 하다보면 이런 함수가 있으면 코딩할때 도움이 되지 않을까? 이런 생각에 구글링으로 정보를 얻을 때가 많습니다. 시간과 날짜의 차이를 돌려주는 함수가 있지 않을까? 해서 검색했는데, 속시원하게 정확히 찦어주는 내용이 없는 것 같아서 여러 코딩의 아이디어를 합쳐 직접 만들어 봤습니다.
원리는 php strtotime이란 초단위 계산하는 내부 함수를 이용하는 방법인데, 원리는 상당히 간단한 편입니다.
우선 완성된 코드를 보겠습니다.
php에서 gap_time(시작날짜시간, 종료날짜시간) 함수를 호출합니다.
<?php
// 두 날짜의 차이를 구한다.
function gap_time($start_date, $end_date) {
$start_time = strtotime($start_date);
$end_time = strtotime($end_date);
$diff = $end_time - $start_time;
$hours = floor($diff/3600);
$diff = $diff-($hours*3600);
$min = floor($diff/60);
$sec = $diff - ($min*60);
return sprintf("%02d:%02d:%02d", $hours, $min, $sec);
}
print gap_time("2021-12-10 18:00:00","2021-12-10 23:50:00");
?>
위의 코드로 "2021-12-10 18:00:00"와 "2021-12-10 23:50:00"의 차이를 구하는 것입니다. 결과를 화면으로 보면,
php 내부함수중 strtotime 이란 것에 대한 이해와 return에서 보여주는 sprintf에 대해서 정도만 안다면 이해하기 쉬운 코드로 생각됩니다.
사용방법은 gap_time("2021-12-10 18:00:00","2021-12-10 23:50:00");
이렇게 호출하는 방식입니다.
sprintf의 간단한 예제
<?php
echo sprintf ("|%+4d|%+4d|\n", 1, -1);
echo sprintf ("|%-4d|%-4d|\n", 1, -1);
echo sprintf ("|%+-4d|%+-4d|\n", 1, -1);
?>
outputs:
| +1| -1|
|1 |-1 |
|+1 |-1 |
strtotime 함수에 대한 예제
문자열 형태의 날짜를 입력받아 UNIX timestamp 값을 돌려주는 함수입니다. 미국인들은 쉽게 쓸 수 있지만, 우리나라와는 날짜 표현 방법이 틀리기 때문에 약간 헷갈릴 소지가 있어 예시를 통해서 좀 더 알아보면 좋겠습니다.
time() 1104151691
strtotime("now") 1104073200 // 주의가 필요함. "now"
strtotime("1972-09-24") 86108400
strtotime("72-9-24") 86108400
strtotime("72-09-24") 86108400
strtotime("9/24/72") 86108400
strtotime("24 September 1972") 86108400
strtotime("24 Sept 72") 86108400
strtotime("24 Sep 72") 86108400
strtotime("Sep 24, 1972") 86108400
strtotime("24-sep-72") 86108400
strtotime("24sep72") 86108400
strtotime("20:02") 1104145320
strtotime("8:02pm") 1104145320
strtotime("last day") 1103986800
strtotime("26-dec-2004") 1103986800
strtotime("next day") 1104246000
strtotime("next monday") 1104678000
date("Y-m-d H:i:s", strtotime("last day")) 2004-12-26 00:00:00
strtotime("1 year") 1135609200
strtotime("1 year ago") 1072450800
strtotime("3 years") 1198681200
strtotime("2 days") 1104246000
strtotime("tomorrow") 1104159600
strtotime("1 days") 1104159600
strtotime("yesterday") 1103986800
strtotime("-1 days") 1103986800
strtotime("1 days ago") 1103986800
strtotime("20041227") 1104073200
반응형
'IT tech Coding > php' 카테고리의 다른 글
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 1. #웹개발 2. #로트번호 3. #성적서보기 4. #ajax 5. #jquery 6. #php 7. #프론트엔드 8. #백엔드 9. #부트스트랩 10. #웹기능구현
- 캐드자동작도
- chatGPT3.5파이썬버전
- 파이썬코드줄바꿈방법
- sql문장 날짜계산
- 오토핫키가이드
- 엑셀셀보호
- #파이썬패키징
- json파일형태보기
- 티스토리챌린지
- 오블완
- 뫄프로그래밍
- 테크에능한여성
- 엑셀입력보호
- #프로그램설치
- 코딩튜토리얼
- 도면자동생성
- #InstallForge
- isset을 적용해야 하는 이유
- General error: 2031
- ajax오류메시지
- Bootstrap 5
- 구글드라이브API
- 코딩효율성
- 엑셀보호
- 효율적코딩방법
- json파일편하게보는법
- coalesce는 한국어로 "코얼레스크" 또는 "코얼리스"
- 프로그래머생활
- 스크립트작성기초
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함