PHP 中文日期转换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 中文日期转换相关的知识,希望对你有一定的参考价值。
这段代码是我在一个学习网看到的,自己觉得不太对,调试了一下,根本没有输出结果,大家来看一下,到底是不是有问题。。
==================================================
本程序将中文日期输出为2001-12-23,并很好解决了“十”的问题,如“十一”和“二十一”中“十”的处理!稍加修改可改为函数。
<?
$str="二零○一年十二月二十三日";
echo $str."<p>";
$flag=0;
$cn=array("一","二","三","四","五","六","七","八","九","十","零","○");
$num=array("1","2","3","4","5","6","7","8","9","","0","0");
$len=strlen($str);
for ($i=0;$i<$len;$i+=2)
$array_str[$i]=substr($str,$i,2);
$cout=0;
while($cout<count($cn))
if ($array_str[$i]==$cn[$cout])
if ($flag==1)
echo "-";
if (($array_str[$i]=="十") and ($flag==1))
$temp[$cout]="1";
echo $temp[$cout];
$flag=2;break;
$temp[$cout]=$num[$cout];
echo $temp[$cout];
$flag=2;
break;
else
if (count($cn)==$cout+1)
$flag=1;
$cout++;
?>
代码似乎没问题,可是为什么没echo出结果呢?
求解。。。
for ($i=0;$i<$len;$i+=2)
和
$array_str[$i]=substr($str,$i,2);
中的2都自己改成3了, 然后我就看到了2001-12-23
我不知道你那为什么没输出,如果你也是保存成utf8,那你最好考虑下每个汉字在utf8中占3个字节的问题
另外我觉得你应该注意下php的编写习惯, <?在很多服务器上运行不能, 因为短标签可能会被服务器管理员关掉, 尽量<?php 参考技术A 有echo结果啊,我这边的结果是
二零○一年十二月二十三日<p>2001-12-23
并且这代码也太罗嗦了。
<?php
$str="二零○一年十二月二十三日";
echo $str."|";
$cn=array('一','二','三','四','五','六','七','八','九','零', '○','年', '月', '日');
$num=array('1','2','3','4','5','6','7','8','9','0', '0','-', '-', '');
$str = str_replace($cn, $num, $str);
$str = preg_replace(array('/-\xca\xae/', '/(\d)\xca\xae/'), array('-1', '\\1'), $str);
// 如果是UTF-8编码的, 把 \xca\xae换成\xe5\x8d\x81
echo $str;
?>
试试这个
以不同格式PHP转换日期格式[重复]
【中文标题】以不同格式PHP转换日期格式[重复]【英文标题】:Convert Date Format in Different Format PHP [duplicate] 【发布时间】:2021-04-07 05:13:35 【问题描述】:我是 PHP 新手,正在学习以不同格式转换日期时间 我有这样的约会时间
我的日期输入是这样的
03/12/2020 23:18
我需要的喜欢
2020-12-03 23:18:00
所以我想试试
$date = date('Y-m-d H:i:s', strtotime($appointment_date));
但它给了我日期
1970-01-01 00:00:00
如果这里有人可以帮助我解决问题,请告诉我。 谢谢!
【问题讨论】:
请显示您的确切代码。 I cannot duplicate the issue @aynber 抱歉,我已经编辑了问题。谢谢! 所以您希望它被解释为 dd/mm/yyyy 而不是 mm/dd/yyyy? PHP 无法知道您使用的是哪种格式。它默认采用 mm/dd/yyyy。顺便说一句,该代码不会产生您声称的输出 - 它产生第 12 场比赛而不是 12 月 3 日 - 3v4l.org/qe5O2。使用 DateTime::createFromFormat 解析日期,然后可以指定传入格式 【参考方案1】:您可以使用 DateTime 格式方法:
$incoming_date = '12/12/2020 23:18';
$date = DateTime::createFromFormat('d/m/Y H:i:s', $incoming_date . ':00');
$outgoing_date = $date->format('Y-m-d H:i:s');
我大约有 95% 的把握你也可以省略秒数,但我不能在没有测试的情况下肯定地说:
$incoming_date = '12/12/2020 23:18';
$date = DateTime::createFromFormat('d/m/Y H:i', $incoming_date);
$outgoing_date = $date->format('Y-m-d H:i:s');
【讨论】:
以上是关于PHP 中文日期转换的主要内容,如果未能解决你的问题,请参考以下文章