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欢迎您。你能发布你的完整代码吗?也许里面有什么东西把它弄坏了。