Carbon setTestNow 函数不起作用
Carbon setTestNow function is not working
我正在处理 Laravel 中的日期。我必须为患者未来的注射设定日期。
为简单起见,假设今天是 13-03-2019(星期三)。
我将第一次约会创建为:
$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);
根据上面的例子,输出应该是:
- 2019-03-18
- 2019-03-20
- 2019-03-22
但问题是它输出的第一个设置日期是正确的,但打印第二个和第三个日期是错误的,因为它将下周的 'Wednesday' 视为今天的日期。
所以输出打印为:
- 2019-03-18
- 2019-03-13
- 2019-03-14
我在这上面花了很多时间,如果你们中的任何人能帮助我,我将不胜感激。
如果有人指导我哪里出错了,我将不胜感激。
谢谢
由于 setTestNow() 函数在第 2 和第 3 个 date/days 时不起作用,所以我首先获取所有需要的三天,然后将它们转换为 'dayOfWeek' returns 天数(周日 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);
}
我正在处理 Laravel 中的日期。我必须为患者未来的注射设定日期。 为简单起见,假设今天是 13-03-2019(星期三)。 我将第一次约会创建为:
$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);
根据上面的例子,输出应该是:
- 2019-03-18
- 2019-03-20
- 2019-03-22
但问题是它输出的第一个设置日期是正确的,但打印第二个和第三个日期是错误的,因为它将下周的 'Wednesday' 视为今天的日期。 所以输出打印为:
- 2019-03-18
- 2019-03-13
- 2019-03-14
我在这上面花了很多时间,如果你们中的任何人能帮助我,我将不胜感激。 如果有人指导我哪里出错了,我将不胜感激。 谢谢
由于 setTestNow() 函数在第 2 和第 3 个 date/days 时不起作用,所以我首先获取所有需要的三天,然后将它们转换为 'dayOfWeek' returns 天数(周日 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);
}