HTML5&;PHP:Get&;将MONTH输入类型值转换为STRING,并从输入值减去一个月


HTML5 & PHP : Get & Convert MONTH Input Type Value into STRING and Minus One Month From Input Value

堆栈溢出社区。最近我有了独特的经历。谷歌已经试了几个小时,但仍然没有找到解决方案。输入和期望的输出实际上很简单,但很棘手,我只是不知道如何正确地编码。

好吧,我来定义需求。

说明和要求:

  1. 我有一个输入字段。此输入字段类型为MONTH(而非DATE)。所以基本上,这个输入字段应该只生成年和月,不同于将生成完整日期的DATE输入类型。

  2. 我想在之前转换为STRING后,在这个MONTH输入字段中回显值(例如:STRING格式的"2016-7"),并生成类似"Jul 2016"的内容。

这种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类型格式的echo fine。

从这段代码中,我了解到strtotime实际上并没有将DATE转换为字符串。我不太清楚,但它在DATE格式下工作得很好(可以回声),但在MONTH格式下不工作。

如果你能告诉我如何将MONTH输入类型转换为STRING,那将非常棒,因为我可以从中学习。

所需输出:

  1. 它将以"2016-07"等基本格式打印
  2. 它将以高级格式打印,如"2016年7月"

=============================================

第二个问题(输入值减去一个月):

实际上,这是另一个与此相关的问题。

第二个问题解释和要求:

  1. 实际上,我想得到MONTH输入字段中的输入值减去输入值的一(-1)个月

第二个问题所需输出:

  1. 因此,例如,如果您输入"2016-07",它将给出"2016-06",依此类推

DATE格式很普通,但MONTH格式似乎对我很有挑战。有人知道如何解决这个问题吗?正如我所说的简单但棘手。顺便说一句,提前谢谢你。

您可以使用DateTime类

$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');

输入"2016-07"后,值(所有字符串)将为:

  • 2016年07月
  • 2016年7月
  • 2016年06月
  • 2016年6月