PHP 日期“最后一个工作日”输出错误的月份

2023-11-30

我正在尝试获取last weekday使用下面的代码显示当前月份的数据。

我期望它的行为就像所有其他运算符一样last friday of并输出本月最后一个工作日。而是输出上个月的最后一个工作日。

我知道我可以通过使用来纠正这个问题modify( '+1 month' )但为什么?为什么其他运营商喜欢last tuesday of工作正常但是last weekday需要1个月加强吗?

<?php
// outputs the previous months date
$gettoday = date( "Y-m-01" );
$freqdate = date( 'Y-m-d', strtotime( 'last weekday '.$gettoday ) );
echo 'next '.$freqdate;

//get the correct date
$gettoday = new DateTime( $gettoday );
$gettoday->modify( '+1 month' );
$gettoday = date_format( $gettoday, 'Y-m-01' );
$freqdate = date( 'Y-m-d', strtotime( $gettoday . ' last weekday' ) );
echo 'next '.$freqdate;
?>

看来您对“最后”在这里的实际含义理解错误。

这与该月的最后一天或最后一周无关 - 它是“最后”,如“最近的前一个”。

你可以从类似的事情开始strtotime('last day of 2020-03')- 那会给你31 Mar 2020,这是星期二。

如果你那么check这是一周中的哪一天,可能是星期六或星期日 -then你可以走了last friday再次使用该值,以降落在该月的最后一个工作日。

Edit:

2020 年所有月份的示例

for($i=1; $i<13; ++$i) {
  $year_month = '2020-'.$i;
  $last_of_month = strtotime('last day of '.$year_month);
  $weekday = date('N', $last_of_month);
  if($weekday < 6) {
    echo 'last weekday of ', $year_month, ' is ', date('Y-m-d, l', $last_of_month), "<br>\n";
  }
  else {
    $last_weekday_of_month = strtotime('last friday', $last_of_month);
    echo 'last day of ', $year_month, ' is ', date('Y-m-d, l', $last_of_month), ' - last weekday of ', $year_month, ' is ', date('Y-m-d, l', $last_weekday_of_month), "<br>\n";
  }
}

这将为您提供以下输出:

last weekday of 2020-1 is 2020-01-31, Friday
last day of 2020-2 is 2020-02-29, Saturday - last weekday of 2020-2 is 2020-02-28, Friday
last weekday of 2020-3 is 2020-03-31, Tuesday
last weekday of 2020-4 is 2020-04-30, Thursday
last day of 2020-5 is 2020-05-31, Sunday - last weekday of 2020-5 is 2020-05-29, Friday
last weekday of 2020-6 is 2020-06-30, Tuesday
last weekday of 2020-7 is 2020-07-31, Friday
last weekday of 2020-8 is 2020-08-31, Monday
last weekday of 2020-9 is 2020-09-30, Wednesday
last day of 2020-10 is 2020-10-31, Saturday - last weekday of 2020-10 is 2020-10-30, Friday
last weekday of 2020-11 is 2020-11-30, Monday
last weekday of 2020-12 is 2020-12-31, Thursday
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 日期“最后一个工作日”输出错误的月份 的相关文章

  • 通过身份验证保护 CodeIgniter 2 应用程序的正确方法是什么?

    I have Ion Auth http benedmunds com ion auth 正确安装并在我的服务器上运行 我也有默认的代码点火器2 新闻 教程在同一个 CI 安装中工作 我只是在玩 并对使用身份验证系统 封闭 或保护整个应用程
  • 使用 ImageMagick (PHP) 将 2 个图像并排合并为 1 个图像

    我认为这是一件容易的事 我有 2 张图片 JPG 我希望它们合并成一张图片 其中 2 张图片并排 所以我有图片 A 和图片 B 我想要图片 AB 并排 两个图像具有相同的宽度和高度 在本例中 宽度 200px 高度 300px 但是第二个图
  • 通过 Sparkpost 发送 iCal 邀请

    我正在尝试使用 SparkPost 通过电子邮件以附件形式发送日历邀请 但收到电子邮件后邀请不会打开 我使用两个文件 calendarinvite php 来创建邀请 使用 Sendemail php 来发送电子邮件 calendarinv
  • 如何将变量插入 PHP 数组?

    我在网上查了一些答案 但都不是很准确 我希望能够做到这一点 id result id info array id Example echo info 0 这有可能吗 您需要的是 不推荐 info array id Example varia
  • 我可以让 swagger-php 在查询字符串上使用数组吗?

    我使用 Swagger php 当我定义查询字符串上的参数时 它可以是一个数组 但据我所知 它不支持这种查询字符串 https api domain tld v1 objects q 1 q 5 q 12 我相信这会被设定in the co
  • 所有 PHP 相等比较都是对称的吗?

    Is a b总是等价于 b a 我认为在 JavaScript 中 由于强制转换 有一些奇怪的情况并非如此 I think ide https stackoverflow com questions 4752579 are all php
  • Ajax 没有将我重定向到下一页

    我正在尝试将单击的图像的 ID 传递到下一页 当我开发代码时 它没有将我重定向到下一页 当我单击 F12 并检查网络中的 POST 时 它显示变量已正确传递到下一页 如附图所示 但它没有将我重定向到下一页 所以现在我知道变量在下一页中正确传
  • 简单的 PHP 回显代码不起作用

    这是我的 html 和 php 脚本 h1 Bob s Auto Parts h1 table width 100 tr tr table 为什么这个输出会出现一个 gt 我希望它是 这有效 仅有的 这是输出 鲍勃的汽车零件 鲍勃
  • php源代码到PO文件生成器

    我必须将我的所有回显 打印字符串转换为PHP源代码代码文件到PO file 为了语言翻译 有批次吗对流器可用于相同的 我如何做到这一点 make gettext在您的服务器上运行 setup a 翻译适配器 例如带有 gettext 适配器
  • 如何检测字符串中的非 ASCII 字符?

    如果我有一个 PHP 字符串 如何以有效的方式确定它是否至少包含一个非 ASCII 字符 我所说的非 ASCII 字符是指不属于该表的任何字符 http www asciitable com http www asciitable com
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • Google Cloud SQL 上的故障转移如何运作?

    我打算将 PHP 应用程序 从 Google Cloud Platform 外部的服务器 连接到 Google Cloud SQL 我想知道如何设计应用程序以正确地对其数据库进行故障转移 根据manual https cloud googl
  • 未传递“client_reference_id”参数

    我使用 Stripe Checkout Stripe 版本 2016 07 06 我想通过参数 client reference id 恢复个性化数据 但在 JSON 中 当我有金额或电子邮件时 我找不到它 我是在测试环境中 你能帮我吗 先
  • 编辑 HTACCESS 文件以防止直接访问特定文件夹中的特定文件

    我试图阻止直接访问子文件夹中的特定文件 我意识到这个论坛上有很多描述类似问题的主题 但是 我的似乎有点尴尬 由于我已经存在 HTACCESS 文件 这是文件的文件路径 www example com PRINCIPAL PROJECTS m
  • 访问sendBeacon发送的数据

    文档表明sendBeacon通过发送其数据HTTP POST request 但在 PHP 中 POST变量似乎是一个空数组 这是我的 JavaScript 代码 navigator sendBeacon beacon log php My
  • 使用 Instagram Basic Display API 时出现“无效平台应用程序”错误

    我正在尝试使用 Instagram Basic 显示 API 但是当我发布授权代码以获取访问令牌时 我不断收到以下错误 error type OAuthException 代码 400 error message 平台应用无效 我正在遵循此
  • 如何在 Zend MVC 中实现 SSL

    我之前已经通过使用特定的安全文件夹 例如服务器上的 https 文件夹与 http 文件夹 实现了安全页面 我已经开始使用 Zend Framework 并希望应用程序的某些部分 例如登录 使用 https 我在谷歌上搜索过 甚至在这里搜索
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t
  • 从字符串中获取数字

    我有一个字符串 例如 lorem 110 ipusm 我想获取 110 我已经尝试过这个 preg match all 0 9 string ret 但这正在返回 Array 0 gt 1 1 gt 1 2 gt 0 我想要这样的东西 Ar
  • 如何使用 php 将 *.xlsb 转换为数组或 *.csv

    我正在尝试转换 xlsb文件到php array or csv文件 或至少 xls 我尝试使用PHPExcel 但看起来它无法识别该文件中的内容 我注意到 你可以重命名 xlsb文件到 zip文件 然后使用命令行解压缩unzip zip 之

随机推荐

  • 如何从下拉列表中获取选定的选项标签?

    我正在开发一个简单的 Web 应用程序 我想在下一个 JSP 页面上的 HTML 页面中获取下拉列表的选项标签 我正在使用 MVC 模式 因此 Servlet 作为控制器会将请求重定向 转发 到 JSP 视图 The request get
  • 如何在Java中将日期格式化为字符串,例如“2000年12月31日”[重复]

    这个问题在这里已经有答案了 我尝试使用SimpleDateFormat类来做到这一点 但我没有找到任何选项 st 那天之后 我只能得到 2000 年 12 月 31 日 如何格式化像 2000 年 12 月 31 日 我的日期以毫秒为单位
  • Android 如何从 Material Design 文档中实现 Bottom Sheet

    如何实现底页规范 http www google com design spec components bottom sheets html Google Drive 的新更新显示了这一点 按下浮动操作按钮 gt 诚然 规格从未提及任何有关
  • 如何用SwiftyJSON解析Json中的Json?

    我从 API 返回以下 JSON 在我的数据库中 我已经以 JSON 格式存储了一个列表 因此 它为我们提供了 JSON 中的 JSON 字符串 我如何在 Swift 中将它们作为对象访问 更重要的是 如何解析 JSON 内部的 JSON
  • 使用 Mocha 和 Chai 测试使用 Web 音频 API 的库

    我正在构建一个使用网络音频 api 更具体地说是 ToneJS 的库 我尝试过使用jsdom 摩卡 jsdom没有成功 我收到这个错误 node modules tone build Tone js 3869 this input this
  • Android Studio 1.4 无法启动调试服务器

    我使用 AS 1 4 已经有一段时间了 新的本机调试功能特别有用 但是 本机调试在我的 Samsung Galaxy Note 10 1 2014 Android 4 4 上不起作用 当我尝试启动本机调试会话时 我看到以下消息 Starti
  • 在 Retrofit2 中的单个请求中使用 @FieldMap 和 @Part 会出现 java.lang.IllegalArgumentException: 仅允许一个编码注释。for 方法

    这可能看起来与之前的问题相似 但没有一个真正回答我的问题 我需要使用 Retrofit2 在一个请求中发布多个字段和多个图像 但出现此错误 java lang IllegalArgumentException Only one encodi
  • PHPUnit:在模拟之后包含类

    我很高兴编写单元测试 但是当我一起运行它们时 它们会发生冲突 我正在测试这个类 class MyClass public function sayHello return Hello world 使用这个测试 所有测试都有这样的结构 cla
  • 如果列的组合(允许重复)是唯一的,MySQL 仅插入新行

    由于 MySQL 不支持 IF EXISTS 我正在努力思考在 MySQL 中执行类似以下伪操作的语法 IF select count from table where col1 var1 AND col2 var2 AND col3 va
  • 将电话号码存储为字符串时如何防止错误输入?

    我正在创建一个可以读取 VCard 的电话簿程序 问题出在电话号码上 一般来说 在美国他们会是这样的 0771234560 但如果电话号码来自国外 就会像这样 94771234560或者可能 22 772324000 现在有 and 迹象来
  • 从文本文件修复区分大小写的搜索?

    前几天我问过一个问题在 Stack Overflow 上 询问如何从搜索文本框中搜索文本文件以匹配字符串 到目前为止 除了搜索区分大小写之外 这种方法效果很好 我想到了一种克服这个问题的方法 但它不会以我希望的方式起作用 我的想法 解决方案
  • fatfree SQL 错误处理

    如果出于某种原因 使用映射器创建条目时出现错误 我会收到错误消息 我想做一个自定义通知并像这样优雅地失败 try request gt save catch Exception e this gt utils gt errorNotify
  • 我的应用程序中的 Nougat OS 中显示的 Webview 空白页面

    我在我的应用程序中调用了 CCAvenue 支付网关集成 直到它正常工作 但是当我将设备操作系统 Marshmallow 更新到 Nougat 时 Webview 页面显示空白屏幕 logcat 中也没有找到错误日志 我还在所有其他低于 N
  • 从 XSD 生成类

    您正在 SOA 世界中进行 Web 服务的契约优先开发 编辑 XSD 文件后 从 XSD 文件自动 重新 生成 net 类的最佳方法是什么 xsd exe 将为您生成新的类 根据 Visual Studio 的设置方式 将 xsd exe
  • 启用/禁用代理应用程序在 IE 中无法正常工作

    我在这里遇到了一个非常奇怪的情况 我编写了一个应用程序 除其他外 它可以将连接的代理从打开切换到关闭 反之亦然 这是通过更改注册表中的值来完成的 public void SetUpProxy string proxy bool enable
  • 通过javascript检测ipad/iphone webview

    有没有办法用 JavaScript 检测网站是否在 iPad 的 Safari 内或应用程序 WebView 内运行 这使用了以下组合window navigator userAgent and window navigator stand
  • 数字签名 亚马逊应用商店

    我在亚马逊应用商店中读到了这样的内容 这是什么意思 我是否必须明确地做某事 或者亚马逊自己签名 我不清楚 你能告诉我吗 我可以为我的应用程序应用签名吗 所有应用程序都必须使用证书进行数字签名 应用于您的应用程序的默认签名是亚马逊提供的证书
  • 在 Web 配置中添加 serverRuntime 标记会导致 500.19 错误

    我刚刚从另一台笔记本电脑上的 TFS 下载了 asp net 项目 但无法运行它 我已经缩小了问题范围 这与我的 webconfig 设置有关 设置是
  • 如何以不区分大小写的方式从列表中删除单词?

    我有一个名为words包含可能为大写或小写或它们的某种组合的单词 然后我有另一个列表称为stopwords其中仅包含小写单词 现在我想浏览一下其中的每个单词stopwords并从中删除该单词的所有实例words以不区分大小写的方式 但我不知
  • PHP 日期“最后一个工作日”输出错误的月份

    我正在尝试获取last weekday使用下面的代码显示当前月份的数据 我期望它的行为就像所有其他运算符一样last friday of并输出本月最后一个工作日 而是输出上个月的最后一个工作日 我知道我可以通过使用来纠正这个问题modify