Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 月份的数字表示形式,带或不带前导零_Php_Datetime - Fatal编程技术网

Php 月份的数字表示形式,带或不带前导零

Php 月份的数字表示形式,带或不带前导零,php,datetime,Php,Datetime,将不带前导零的月份转换为带前导零的月份,会给出错误的输出 foreach(range(1,12) as $iM){ $date = DateTime::createFromFormat('n', $iM); $m=intval($date->format('m')); echo "[$iM, $m]"; } Outout: [1, 1][2, 3][3, 3][4, 5][5, 5][6, 7][7, 7][8, 8][9, 10][10, 10][11, 12][12

将不带前导零的月份
转换为带前导零的月份
,会给出错误的输出

foreach(range(1,12) as $iM){
   $date = DateTime::createFromFormat('n', $iM);
   $m=intval($date->format('m'));
   echo "[$iM, $m]";
}
Outout:

[1, 1][2, 3][3, 3][4, 5][5, 5][6, 7][7, 7][8, 8][9, 10][10, 10][11, 12][12, 12]

我将使用这个解决方案,将月份格式化为带有普通年份和日期以及可变月份的日期

代码:

foreach(范围(1,12)为$iM){
$date=DateTime::createFromFormat('Y-d-n',“2016-01-”)$iM);
$m=intval($date->format('m');
回声“[$iM,$m]”;
}
Outout:

[1, 1][2, 2][3, 3][4, 4][5, 5][6, 6][7, 7][8, 8][9, 9][10, 10][11, 11][12, 12]

我建议您添加一个简单的
var\u转储($date)语句,以便查看发生了什么

您不能有不完整的日期,因此未提供的详细信息取自当天。所以当你说“二月”时,PHP理解“2016年2月31日”,因为今天是2016年5月31日。由于这是一个无效的日期,PHP会将适当的天数计算到下个月,您会得到“2016年3月2日”

不管数字是什么意思,您可以这样做:

// Add leading zero
$m = sprintf('%02d', $iM);

// Remove leading zero
$iM = (int)$m;

你是不是刚发布了这个问题和答案,你会在一秒钟内接受,本?任何比我的答案更好的人都会被接受,而不是我自己的答案solution@Ben问和回答你自己的问题是可以的,但是你会冒着人们被激怒的风险,他们浪费时间去“帮助”。这意味着,如果你诚实地解决你自己的问题,你就可以——但这闻起来更像是在尝试代表农场。说真的,这样做很好。您甚至有一个GUI,允许同时发布这两个文件。因此,它旨在帮助尽可能多的人,而不仅仅是个人如何提出最初的问题。
// Add leading zero
$m = sprintf('%02d', $iM);

// Remove leading zero
$iM = (int)$m;