我尝试获取 n 日期范围之间的所有日期,以及这些日期范围内的所有日期。
控制器:
public function index()
{
$startDate = new Carbon('2019-11-20');
$endDate = new Carbon('2019-11-27');
$all_dates = array();
while ($startDate->lte($endDate)) {
$all_dates[] = $startDate->toDateString();
$startDate->addDay();
}
return $all_dates;
}
我的输出看起来不错。这正是我所需要的:
["2019-11-20","2019-11-21","2019-11-22","2019-11-23","2019-11-24","2019-11-25","2019-11-26","2019-11-27"]
我尝试了多种方式将日期范围从数据库传递到函数。但这不起作用。在我的表格中有两个重要字段:
$query = DB::select('start_date', 'end_date')->get();
1:如何获得与示例相同的结果?
2:如何在输出中忽略每个日期范围的开始日期和结束日期?我只需要一个日期范围内的日期即可。
更新:
所以我找到了解决第一个问题的方法。我的表格当前有两行:
id | start_date | end_date
1 | 2019-11-22 | 2019-11-24
2 | 2019-11-26 | 2019-11-28
我通过两个数据库查询(每个字段一个)扩展了我的工作功能,并将它们与循环结合在一起。
public function index()
{
$query_start_dates = Bookings::select('start_date')->get();
$start_dates = array();
$multiple_start_date = json_decode($query_start_dates, true);
foreach($multiple_start_date as $single_start_date)
$start_dates[] = implode(', ', $single_start_date);
$query_end_dates = Bookings::select('end_date')->get();
$end_dates = array();
$multiple_end_date = json_decode($query_end_dates, true);
foreach($multiple_end_date as $single_end_date)
$end_dates[] = implode(', ', $single_end_date);
$all_dates = array();
foreach(array_combine($start_dates, $end_dates) as $f => $n) {
$startDate = new Carbon($f);
$endDate = new Carbon($n);
while ($startDate->lte($endDate)) {
$all_dates[] = $startDate->toDateString();
$startDate->addDay();
}
}
return $all_dates;
}
我的新输出:
["2019-11-22","2019-11-23","2019-11-24","2019-11-26","2019-11-27","2019-11-28"]
它看起来并不聪明,但是可以完美运行;)现在,我只需要第二个问题的解决方案即可。
谢谢!
答案 0 :(得分:1)
您已经解决了第一个问题。我现在正尝试帮助您解决最后一个问题。再次有很多方法可以解决它,简单的方法(虽然不是很聪明,但可以使船漂浮;)):
您可以简单地分割日期数组中的第一个和最后一个元素。通常,您可以使用array shift和pop
#!/usr/bin/env python3
import sys
import numpy as np
fic = sys.argv[1]
data = np.loadtxt(fic)
factors = map(float, sys.argv[2:])
print ('# scale', fic, 'by', list(factors))
for i,f in enumerate(factors):
data[:,i] *= f
np.savetxt(sys.stdout, data)
您也可以使用array_slice,但我认为shift和pop比slice更好。它表现更好。