【问题标题】:Count weekends between 2 dates计算两个日期之间的周末
【发布时间】:2011-04-17 12:05:24
【问题描述】:

我正在编写一个价格计算器,其中周末有特价。为此,我需要知道两个日期之间有多少个周末。

请注意,周末,我的意思是如果他们想从周四到周二,周六和周日不是周末价格的 2 天,而是单一价格的 1 个周末。因此,对于星期四 -> 星期二,这将算作 1 个周末。

对于星期六 -> 星期六将计为 2 个周末,因为第一个星期六与下一个星期六不同。周日到周日也是如此,它计算周末,无论它们是完整的周末还是部分周末。只要周末的部分或任何部分在该日期范围内,就计为 1 个周末。我能想到的最好的类比是将周末视为持续 48 小时的一天,而不是持续 24 小时的两天。

那么,我如何确定 php 中两个日期之间有多少个“整个周末或部分周末”?

【问题讨论】:

  • 用正则表达式解释:[saturday|sunday]{1,2} = one week "count?"
  • 也许我应该开始第二个问题,问这意味着什么,星期六 + 星期天实际上是一回事。星期六 == 星期日 == 星期六 + 星期日
  • 所以它是周末的价格,而不是周末一天的价格。

标签: php date


【解决方案1】:

我们必须从确定日期之间的天数开始。 就像

$n = floor((timestamp_end - timestamp_start)/86400);

如果您说星期六->星期六 = 2,那么除非我们的开始日是星期六并且天数是 7 的乘积,否则周末数将为 $n/7,否则为 $n/7 +1。所以我们可以开始。

$n_weekends = ceil($n/7);

然后

if (date("N", timestamp_start) == 6 && $n%7 == 0 ){
  $n_weekends++;  
}

【讨论】:

  • 这是否说明开始日是星期天?记住星期日 -> 下周的星期日也算 2 个周末
猜你喜欢
  • 1970-01-01
  • 2020-08-21
  • 1970-01-01
  • 2019-04-15
  • 1970-01-01
  • 1970-01-01
  • 2022-12-06
  • 1970-01-01
相关资源
最近更新 更多