- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我从两个日期开始。
my $date1 = 01/01/2016;
my $date2 = 05/15/2016;
我需要将星期日的所有日期放在两个日期之间。
知道我应该从哪里开始吗?
最佳答案
Your solution is good , 但它可能会消耗大量内存,从而创建一个可能永远不会使用的星期日数组。 DateTime 对象既不小也不便宜。
另一种方法是迭代器,一个每次调用都会生成下一个星期日的函数。它根据需要生成每个星期日,而不是事先计算所有这些。这可以节省内存并支持可能无限的星期日。
use strict;
use warnings;
use v5.10;
sub sundays_iterator {
my($start, $end) = @_;
# Since we're going to modify it, copy it.
$start = $start->clone;
# Move to Sunday, if necessary.
$start->add( days => 7 - $start->day_of_week );
# Create an iterator using a closure.
# This will remember the values of $start and $end as
# they were when the function was returned.
return sub {
# Clone the date to return it without modifications.
# We always start on a Sunday.
my $date = $start->clone;
# Move to the next Sunday.
# Do this after cloning because we always start on Sunday.
$start->add( days => 7 );
# Return Sundays until we're past the end date
return $date <= $endDate ? $date : ();
};
}
返回一个闭包,一个匿名子例程,它会记住创建它的词法变量。有点像一个由内而外的对象,一个附加了数据的函数。然后您可以像调用任何子例程引用一样调用它。
my $sundays = sundays_iterator($startDate, $endDate);
while( my $sunday = $sundays->() ) {
say $sunday;
}
好处是它可以节省大量内存,如果您将日期作为用户输入,这一点尤其重要:恶意攻击者可能会要求您提供一个巨大的范围,从而消耗您服务器的大量内存。
它还允许您将生成列表与使用列表分开。现在您有了一种在日期范围内生成星期日的通用方法(或者,稍作调整,一周中的任何一天)。
缺点是它可能比在循环中构建数组慢一点……但可能不会很明显。函数调用在 Perl 中相对较慢,因此每个星期天进行一次函数调用将比循环慢,但调用那些 DateTime 方法(调用其他方法调用其他方法)将淹没该成本。与使用 DateTime 相比,调用迭代器函数是九牛一毛。
关于perl - 如何获得两个日期之间的星期日数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41129603/
我需要将日期截断到一周的开始,在我的例子中是星期天。我如何在 PostgreSQL 中执行此操作?这截断到星期一: date_trunc('week', mydate) 最佳答案 如果您从当前日期中减
我需要形成几个包含日期集的子查询,仅包括两个设置点之间的星期日,例如 01.04.2018 和 30.06.2018 之间。 想到的第一件事是这样的: SELECT '01.04.2018' STAR
我有周数(例如 23),我想获取该周周一和周日的日期。 我假设星期一是一周的第一天(例如,我的脚本中有 SET DATEFIRST 1)。 最佳答案 DECLARE @startweek1 datet
我使用 Bootstrap DateTimePicker 来显示日历,我想从日历中删除一些天(禁用它们) $(function () { $('#datetimepicker1').d
我有以下代码: function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); // current
我有以下代码: function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); // current
我想知道如何以 2013 年 04 星期日的格式将日期和时间最好地插入到数据库表中。我一直在尝试但一直插入为 2013-09-16 。谢谢 这是我的sql代码: $query = "INSERT IN
我正在使用 UILocalNotification 进行报警。我有一个基于工作日(星期日、星期一、星期二、星期三、星期四、星期五、星期六)重复的自定义选项。这么多应用程序都做了这个过程。我尽力了。但我
下面的函数返回图表数据 上述函数返回的输出格式如下 [Object { date=Date, value=112, volume=1469}, Object { date=Date, value
我是一名优秀的程序员,十分优秀!