PHP字符串到日期转换

时间:2013-09-07 01:40:51

标签: php date

我要把头发拉出来。我有一个表单,人们从下拉菜单中选择一天一个月,当前年份将自动连接。

在服务器上我有这个:

$received =  date("Y")."-".$_POST['month']."-".$_POST['day'];
$date = strtotime($received);

$newformat = date('Y F j',$date);
echo $newformat;

我们说$_POST['month'] == 'April'$_POST['day'] == '5'

输出总是这样:

2013 April 1(即当天默认为1)。

有趣的是,如果$_POST['day'] == '24'则输出为:

2013 April 2

就好像它只是看第一个数字..任何想法都会非常感激!

2 个答案:

答案 0 :(得分:2)

你的问题是你的“月”变量是一个字符串而不是一个整数,但你把它放在日期中,好像它是一个整数? 2013-April-5 ...尝试添加4代替April

<强>更新

要回答您的问题,您可以让您的客户更新以获得<option value="1">January</option>等选项,或者更新您的PHP以便像以下一样处理:

<? $received =  $_POST['month']." ".$_POST['day']." ".date("Y");
$date = strtotime($received);

$newformat = date('Y F j',$date);
echo $newformat; ?>

我认为这样可行。

答案 1 :(得分:1)

问题可能出在您的处理程序和/或表单中(没有在您的问题中看到完整的代码)。

我测试了它,我得到了完美的结果。

当我在下面构建的表单中输入5一个月和24一天时,我会回来2013 May 24

检查表单和处理程序中的语法。

在使用以下表单和处理程序时,我得到了完美的结果

HTML表单

<form action="date_handler.php" method="post">
Month: <input type="text" name="month">
<br>
Day: <input type="text" name="day">
<br>
<input type="submit" name="submit" value="Submit">
</form>

PHP处理程序

<?php
$month=$_POST['month'];
$day=$_POST['day'];
$received =  date("Y")."-".$_POST['month']."-".$_POST['day'];
$date = strtotime($received);
$newformat = date('Y F j',$date);
echo $newformat;
?>