php - 日期时间修改比较的PHP问题
问题描述
这是我在 cron 每半小时调用一次的 PHP 脚本时遇到的问题:
$dt = new DateTime();
$dt->modify("+2 hours");
if ($dt > new DateTime("01:00:00") && $dt < new DateTime("2:00:00")) {
include_once("../p-auto.php");
$fipw = fopen('../logs/cron_f.txt', 'a');
fwrite($fipw, "p-auto cron: ".date("F j, Y, g:i a").PHP_EOL);
fclose($fipw);
}else{
$fipw = fopen('../logs/cron_f.txt', 'a');
fwrite($fipw, "NOT p-auto: ".date("F j, Y, g:i a").PHP_EOL);
fclose($fipw);
}
我在服务器上看到的日志是这样的:
NOT p-auto: April 20, 2020, 11:07 pm
NOT p-auto: April 20, 2020, 11:39 pm
NOT p-auto: April 21, 2020, 12:07 am
NOT p-auto: April 21, 2020, 12:36 am
NOT p-auto: April 21, 2020, 1:06 am
NOT p-auto: April 21, 2020, 1:36 am
NOT p-auto: April 21, 2020, 2:08 am
NOT p-auto: April 21, 2020, 2:36 am
NOT p-auto: April 21, 2020, 3:06 am
NOT p-auto: April 21, 2020, 3:36 am
NOT p-auto: April 21, 2020, 4:08 am
一旦我添加了,问题似乎就开始了$dt-modify
,我怀疑是因为我在日期更改之间修改了 dateTime,这会导致 if 测试出现某种错误。
现在,我无法修改服务器的设置(它不属于我,我无法要求任何类型的自定义),并且服务器的时区配置为比实际本地时间晚 2 小时。我只能修改我的 PHP 脚本,所以我能实现的有点有限。
请如果有人提出某种建议,我一周以来就对这个问题感到震惊......
解决方案
现在,我无法修改服务器的设置(它不属于我,我无法要求任何类型的自定义),并且服务器的时区配置为比实际本地时间晚 2 小时。我只能修改我的 PHP 脚本
这就是您所需要的,指定您希望自己的脚本实例操作的时区,可以在运行时使用date_default_timezone_set()
由于最初尝试手动向 datetime 实例添加两个小时的变通办法导致的跨越日期边界的任何问题,都不应再出现。
推荐阅读
- typescript - 为什么 TypeScript 不能从过滤后的数组中推断类型?
- java - ServerSymmetricEngine 无法启动
- r - 将数据框中的多个列与另一个数据框中的特定值相乘
- python - 使用正则表达式验证输入
- linux - EGLFS QML 屏幕未旋转
- visual-studio-code - 如何在 VS Code 编辑器中使当前行加粗?
- c# - How to move cursor back 1 reading with FileStream?
- php - 在 PHP 中获取格式为 1:2:3:4 的 MySQL 数据
- python - 在python中创建(引理,NER类型)的元组,Nlp问题
- discord - 公会缺少图标时出现嵌入错误?