php - 为什么循环出月份名称时会得到两个 March?
问题描述
运行以下代码时,为什么我得到两个 March 而不是 February 然后是 March?
<?php
for($i=1; $i<= 12; $i++){
//MONTH NAME
$monthName = strftime('%B', mktime(0, 0, 0, $i));
if($i <= 9){
$monthNr = "0".$i;
}
else{
$monthNr = $i;
}
echo $monthNr . ':' . ucfirst($monthName) ."\n";
}
?>
输出:
01:January
02:March
03:March
04:April
05:May
06:June
07:July
08:August
09:September
10:October
11:November
12:December
解决方案
正因为如此:
参数可以按从右到左的顺序省略;因此省略的任何参数都将根据本地日期和时间设置为当前值。
如果当前日期大于指定月份的最后一天,则额外的天数会将生成的时间戳延长到下个月。在这种情况下,今天是 30 日,所以 2 月 30 日变成了 3 月 2 日。
如果你增加一天,mktime
你会得到你期望的结果。
$monthName = strftime('%B', mktime(0, 0, 0, $i, 1));
推荐阅读
- ios - 在 Swift 中对另一个视图控制器执行 Segue 后关闭游戏视图控制器
- swift - 如何快速获取 NSImage 格式和 alpha?
- javascript - 在 HTML5 画布中快速操作 drawImage() 亮度
- android - 我想从 API 数据 Android Java 中显示头像
- c - 为什么 snprintf 在 %s 之后不读取?
- python - CNN中输入的不平衡纵横比
- vb.net - OpenXML 的文档格式
- plsql - 在 PL/SQL 中循环使用游标
- c# - TCPClient & TCPListener | 对等崩溃 c# 重置连接
- html - 我如何制作响应式导航栏 - BootStrap v3