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

时间:2016-07-28 08:40:00

标签: php mysql html5 date

Stackoverflow社区。最近我只有独特的经历。谷歌,试用和错误几个小时,但仍然没有找到解决方案。输入和所需的输出实际上非常简单但很棘手,我只是不知道如何正确编码。

好吧,我将定义要求。

说明和要求:

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

  2. 我希望在之前转换为STRING之后回显此MONTH输入字段中的值(例如:" 2016-7"以STRING格式)并且还产生类似" 2016年7月&# 34;

  3. 此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,那将会非常棒,因为我可以从中学习。

    期望输出:

    1. 它将以&#34; 2016-07&#34;
    2. 等基本格式打印
    3. 它将以高级格式打印,例如&#34; 2016年7月和#34;
    4. =============================================== ==========

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

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

      第二个问题解释和要求:

      1. 我实际上想要在MONTH输入字段中输入值减去输入值的一(1)个月。
      2. 第二个问题所需的输出:

        1. 所以如果你输入&#34; 2016-07&#34;例如,它将给予&#34; 2016-06&#34;等等。
        2. DATE格式是普通的,但MONTH格式似乎挑战我。有谁知道如何解决这个问题?正如我说的简单但棘手。顺便说一句,提前谢谢你。

1 个答案:

答案 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;值(所有字符串)将是:

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