Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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_Date - Fatal编程技术网

PHP字符串到日期的转换

PHP字符串到日期的转换,php,date,Php,Date,我要把头发从别人身上拔下来。我有一个表单,人们从下拉菜单中选择一天和一个月,而当前年份将自动连接 在服务器上,我得到了以下信息: $received = date("Y")."-".$_POST['month']."-".$_POST['day']; $date = strtotime($received); $newformat = date('Y F j',$date); echo $newformat; 比如说,$\u POST['month']='April'和$\u POST['

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

在服务器上,我得到了以下信息:

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

$newformat = date('Y F j',$date);
echo $newformat;
比如说,
$\u POST['month']='April'
$\u POST['day']='5'

输出结果总是这样:

2013年4月1日
(即日期默认为1)

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

2013年4月2日

就好像它只看第一个数字。。任何想法都将不胜感激

您的问题是您的“月”变量是字符串而不是整数,但您将其放在日期中就好像它是整数一样<代码>2013年4月5日。。。试着用
4
代替
April

更新

要回答您的问题,您可以更新您的客户机,使其具有类似于
一月
的选项,或者更新您的PHP以类似于:

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

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

我认为这会起作用。

你的问题是你的“月”变量是字符串而不是整数,但你把它放在日期中就好像它是整数一样<代码>2013年4月5日。。。试着用
4
代替
April

更新

要回答您的问题,您可以更新您的客户机,使其具有类似于
一月
的选项,或者更新您的PHP以类似于:

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

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


我认为这会起作用。

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

我已经测试过了,我得到了完美的结果

当我在下面构建的表单中输入月份的
5
和日期的
24
时,我返回了2013年5月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;
?>

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

我已经测试过了,我得到了完美的结果

当我在下面构建的表单中输入月份的
5
和日期的
24
时,我返回了2013年5月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;
?>



您是否验证了
$received
包含的内容?可能重复的是-如果我验证了
echo$received我将获得
2013-4-5
-正确的输出..@remyabel-这没有什么区别。如果我做了
$newformat=date('Y-F-j',$date)
我得到了同样的结果-
2013-4-1
删除$received格式中的虚线,看看这是否有帮助。您是否验证了
$received
包含的内容?可能重复的是-如果我做了
回送$received我将获得
2013-4-5
-正确的输出..@remyabel-这没有什么区别。如果我做了
$newformat=date('Y-F-j',$date)
我也得到了同样的结果-
2013-4-1
删除$received格式中的虚线,看看这是否有帮助。我认为你是对的!在客户端,下拉列表以字符串形式显示月份-
一月、二月等
。提交表单时,
$\u POST['month']
是以字符串形式出现的下拉列表的值。有没有办法不用将月份转换为整数就可以将其转换为日期?@user1775598更新了我的答案以提供帮助。这正是我需要的,谢谢!问题是我设置了带破折号的
$received
var,还是我设置了
的顺序?还是两者都有?@user1775598我认为这是两者的问题。拼写月份时不使用破折号,因此PHP无法理解格式。很高兴我能帮上忙,如果它能为未来的访问者解决您的问题,请不要忘记将此标记为答案。谢谢~我想你是对的!在客户端,下拉列表以字符串形式显示月份-
一月、二月等
。提交表单时,
$\u POST['month']
是以字符串形式出现的下拉列表的值。有没有办法不用将月份转换为整数就可以将其转换为日期?@user1775598更新了我的答案以提供帮助。这正是我需要的,谢谢!问题是我设置了带破折号的
$received
var,还是我设置了
的顺序?还是两者都有?@user1775598我认为这是两者的问题。拼写月份时不使用破折号,因此PHP无法理解格式。很高兴我能帮上忙,如果它能为未来的访问者解决您的问题,请不要忘记将此标记为答案。谢谢~谢谢你,伙计。我认为问题在于,
$\u POST['month']
变量是一个被解析为字符串而不是int的变量。现在,我试图弄清楚是否可以使用该月的字符串创建日期,这样我就不必将其转换为int。@user1775598欢迎您。你能发布你的完整代码吗?也许里面有什么东西把它弄坏了,谢谢你。我认为问题在于,
$\u POST['month']
变量是一个被解析为字符串而不是int的变量。现在,我试图弄清楚是否可以使用该月的字符串创建日期,这样我就不必将其转换为int。@user1775598欢迎您。你能发布你的完整代码吗?也许里面有什么东西把它弄坏了。