Chú ý khi dùng Carbon::createFromFormat('Ym',...)
Carbon::createFromFormat
Vấn đề: thời điểm 08/31 muốn tạo tháng 2 nhưng lại trả về tháng 3
Cách giải quyết
- Dùng
Carbon::create(...$args)
thì không vấn đề gì
>>> Carbon::create(2019,2);
Carbon::create(2019,2);
=> Carbon\Carbon @1548946800 {#3012
date: 2019-02-01 00:00:00.0 Asia/Tokyo (+09:00),
}
2. Dùng Carbon::createFromFormat($format, $datetimeStr)
nguy hiểm cần chú ý
>>> Carbon::createFromFormat('Ym', '201902');
Carbon::createFromFormat('Ym', '201902');
=> Carbon\Carbon @1551598344 {#3013
date: 2019-03-03 16:32:24.0 Asia/Tokyo (+09:00),
}
tháng 2 có 28 ngày nên trả về là ngày 3/3
viết lại như dưới thì chạy đúng, sử dụng Ymd
>>> Carbon::createFromFormat('Ymd', '20190201')->startOfMonth();
Carbon::createFromFormat('Ymd', '20190201')->startOfMonth();
=> Carbon\Carbon @1548946800 {#3016
date: 2019-02-01 00:00:00.0 Asia/Tokyo (+09:00),
}