티스토리 뷰
Carbon으로 Date 변경시 잘못된 날짜 값으로 노출됨.
기준 날짜에 Month, Date를 추가하여 날짜를 변경하여 호출시 원하는 날짜 값이 노출되지 않음.
$date = carbon::parse('2024-01-31');
// 참고 2024년 2월 마지막 날은 29일
// 기준 날짜에 한달하고 2일 추가하여 날짜 출력하기
// 예상하는 값은 2024-03-02
echo $date->addMonth(1)->addDay(2)->format('Y-m-d');
// 2024-03-04 ?
1월에 한달을 더하면 예상되는 날짜는 2월 마지막 날인 02-29일이 값이 나와야하나 03-02일이 출력된다.
이는 Carbon에서 월단위 이상 값을 더할 때 기준일에 무조건 월 단위 값을 더하고, 달력에 날짜 형식에 맞추는(?) 작업이 추가된다.
예를 들어 2024-01-31에 addMonth(1)을 하게 될 경우 2024-02-31이 되고 31일은 존재하지 않아 2024-02-29 에서 29일과 31일에 차이인 2일을 추가로 더한다. 해당되는 부분을 overflow로 정의하고있다. 왜 이렇게 표현하는지는 모르겠다.
해당 부분을 해결하기 위해서 withoutOverflow 함수를 사용하여 원하는 값을 출력하면 된다.
해결방안
addMonthWithoutOverflow를 사용하여 해결.
$date = carbon::parse('2024-01-31');
echo $date->addMonthWithoutOverflow(1)->addDay(2)->format('Y-m-d');
// 2024-03-02
'공부합시다 > php' 카테고리의 다른 글
Laravel에서 kafka 사용하기 laravel-kafka (0) | 2024.09.24 |
---|---|
l5-swagger Response에 Schema + Property 추가하기 (0) | 2024.08.29 |
Laravel Exception Test (0) | 2023.11.15 |
Laravel 다중 DB 사용시 테스트 트랜잭션 사용하기. (0) | 2023.11.13 |
Laravel auth session + token 동시에 사용하기 (0) | 2023.09.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- laravel-test
- MySQL
- exception-test
- 메일
- session+token authorize
- graphql
- 정규식
- 테스트_다중트랜잭션
- password-manager
- php-laravel
- laravel-kafka
- POP3
- l5-swagger-response
- observer 매개변수 전달하기
- Laravel
- Python
- redis
- graphql-php
- l5-swagger
- 정의
- php
- eloquent-observer
- 자바스크립트
- bitwarden-cli
- aaa패턴
- django
- 라라벨
- vim
- addMonth
- addMonthWithoutOverflow
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함