我正在Laravel约会。我必须为患者将来的注射确定日期。 为简单起见,让我们假设今天是2019年3月13日(星期三)。 我创建的第一个日期为:
$firstDate = Carbon::create(2019,03 ,18, 12); // The day is Monday
// set date
Carbon::setTestNow($firstDate);
现在我希望接下来的两个约会应该在星期三和星期五。所以我再次将日期设置如下:
// set second date
$secondDate = new Carbon('Wednesday');
Carbon::setTestNow($secondDate);
// set thirdDate
$thirdDate = new Carbon('Friday');
Carbon::setTestNow($thirdDate);
根据上面的示例,输出应为:
但是问题是它输出的第一个设置日期正确,但是打印第二个和第三个日期错误,因为它将下周的“星期三”视为今天的日期。 因此输出显示为:
我已经花了很多时间,如果你们中有人能在此方面帮助我,我将不胜感激。 如果有人指导我哪里出问题了,我将不胜感激。 谢谢。
答案 0 :(得分:1)
由于setTestNow()函数在第2和第3个日期/天不起作用,因此我首先获取了所有三个必需的日期,然后将它们转换为“ dayOfWeek”,该日期返回天数(星期日0,星期一1,依此类推。 )。我从第二天和第三天减去了第一天,然后最后将这些天加到从日期选择器获得的日期中。
// set the start date
if( $visitstart_date != null && $visitstart_date != '') {
Carbon::setTestNow($visitstart_date);
} else {
Carbon::setTestNow();
}
if($perweek_visit1_day != '')
{
//Get first selected day number
$firstDay = Carbon::parse($perweek_visit1_day)->dayOfWeek;
$perweek_visit1_dayDate = Carbon::now();
}
if($perweek_visit2_day != '')
{
//Get second day numer
$secondDay = Carbon::parse($perweek_visit2_day)->dayOfWeek - $firstDay;
$perweek_visit2_dayDate = Carbon::now()->addDays($secondDay);
}
if($perweek_visit3_day != '')
{
//Get third day number
$thirdDay = Carbon::parse($perweek_visit3_day)->dayOfWeek - $firstDay;
$perweek_visit3_dayDate = Carbon::now()->addDays($thirdDay);
}