Stackoverflow社区。最近我只有独特的经历。谷歌,试用和错误几个小时,但仍然没有找到解决方案。输入和所需的输出实际上非常简单但很棘手,我只是不知道如何正确编码。
好吧,我将定义要求。
说明和要求:
我有一个输入字段。此输入字段类型为MONTH (不是DATE)。所以基本上这个输入字段应该只生成年份和月份,不同于将产生完整日期的DATE输入类型。
我希望在之前转换为STRING之后回显此MONTH输入字段中的值(例如:" 2016-7"以STRING格式)并且还产生类似" 2016年7月&# 34;
此MONTH格式与DATE格式类似,但脚本通常使用DATE格式,不使用MONTH格式。多数民众赞成让我感到疑惑,我很好奇为什么。
实验:
对于基本输入类型MONTH,我使用此脚本。
<input type="month" name="monthTransaction" value="<?php echo date("Y-m") ?>"/>
然后我尝试了这样的事情来回应它。
$month = mysql_real_escape_string($_POST['monthTransaction']);
$newmonth = date('Y-m', strtotime(str_replace('-', '/', $tr)));
echo $month; // Probably STRING format (i need further explanation)
echo $newmonth; // Probably DATE format (i need further explanation)
毕竟这不起作用。但我尝试使用DATE类型的输入字段,它的工作。具有DATE类型格式的回声很好。
从这段代码中我了解到实际上strtotime并没有将DATE转换为字符串。我不太清楚,但它可以很好地(可以回应)使用DATE格式但不能使用MONTH格式。
如果你能告诉我如何将MONTH输入类型转换为STRING,那将会非常棒,因为我可以从中学习。
期望输出:
=============================================== ==========
第二个问题(从输入值减去一个月):
嗯,这实际上是另一个与此相关的问题。
第二个问题解释和要求:
第二个问题所需的输出:
DATE格式是普通的,但MONTH格式似乎挑战我。有谁知道如何解决这个问题?正如我说的简单但棘手。顺便说一句,提前谢谢你。
答案 0 :(得分:0)
您可以使用DateTime class
$month = mysql_real_escape_string($_POST['monthTransaction']);
$temp = new DateTime($month.'-01');
$newmonth = $temp->format('Y-m');
$newMonthName = $temp->format('F Y');
$newMonthMinusOne = $temp->sub(new DateInterval('P1D'))->format('Y-m');
$newMonthMinusOneName = $temp->sub(new DateInterval('P1D'))->format('F Y');
输入&#39; 2016-07&#39;值(所有字符串)将是: