Carbon 获取实际月份和周中的天数
Carbon get number of days in actual month and week
我正在尝试将当前一周中的所有日期和一个月中的所有日期收集到一个数组中。这应该很容易,但是尽管我搜索了很多,但我找不到解决方案。
例如把今天作为一天,我需要的结果是这样的:
$daysInWeek = [31,1,2,3,4,5,6];
$daysInMonth = [1,2,3,4,5,6,7,...,28];//Note here that are febrary, and need to return 28, not 31
我写了这段代码,但我认为 Carbon 可以使它更容易:
$weekStartDate = Carbon::now()->startOfWeek();
$monthStartDate = Carbon::now()->startOfMonth();
$daysInWeek[] = $weekStartDate->day;
for ($i=0; $i < 6; $i++) {
$daysInWeek[] = $weekStartDate->addDay(1)->day;
}
$daysInMonth[] = $monthStartDate->day;
$lastMonthDay = Carbon::now()->month()->daysInMonth; //This return 31 days, not 28.
for ($i=0; $i < $lastMonthDay-1; $i++) {
$daysInMonth[] = $monthStartDate->addDay(1)->day;
}
根据周数计算天数,在此处查看Calculating days of week given a week number
使用 date_create
和 date_diff
函数
可以更轻松地按月计算天数
例如:
<?php
$d1 = date_create(date('Y').'-'.date('m').'-01'); //current month/year
$d2 = date_create($d1->format('Y-m-t')); //get last date of the month
$days = date_diff($d1,$d2);
echo "Number of days: ". $days->days+1; //+1 for the first day
知道天数后,您现在可以创建必要的数组
例如:
<?php
$days_arr = [];
$d = 1;
do{
$days_arr[] = $d;
$d++;
}while ($d <= $days->days+1);
print_r($days_arr);
我正在尝试将当前一周中的所有日期和一个月中的所有日期收集到一个数组中。这应该很容易,但是尽管我搜索了很多,但我找不到解决方案。 例如把今天作为一天,我需要的结果是这样的:
$daysInWeek = [31,1,2,3,4,5,6];
$daysInMonth = [1,2,3,4,5,6,7,...,28];//Note here that are febrary, and need to return 28, not 31
我写了这段代码,但我认为 Carbon 可以使它更容易:
$weekStartDate = Carbon::now()->startOfWeek();
$monthStartDate = Carbon::now()->startOfMonth();
$daysInWeek[] = $weekStartDate->day;
for ($i=0; $i < 6; $i++) {
$daysInWeek[] = $weekStartDate->addDay(1)->day;
}
$daysInMonth[] = $monthStartDate->day;
$lastMonthDay = Carbon::now()->month()->daysInMonth; //This return 31 days, not 28.
for ($i=0; $i < $lastMonthDay-1; $i++) {
$daysInMonth[] = $monthStartDate->addDay(1)->day;
}
根据周数计算天数,在此处查看Calculating days of week given a week number
使用 date_create
和 date_diff
函数
例如:
<?php
$d1 = date_create(date('Y').'-'.date('m').'-01'); //current month/year
$d2 = date_create($d1->format('Y-m-t')); //get last date of the month
$days = date_diff($d1,$d2);
echo "Number of days: ". $days->days+1; //+1 for the first day
知道天数后,您现在可以创建必要的数组 例如:
<?php
$days_arr = [];
$d = 1;
do{
$days_arr[] = $d;
$d++;
}while ($d <= $days->days+1);
print_r($days_arr);