如何解决PHP在字符串的多个点插入字符
| 我有一个从数据库发送的字符串,我想将其转换为日期/时间字符串。源字符串为:20110524153631
我希望它是:
2011-05-24 15:36:31
我知道我可以使用多个插入,但是我想知道是否有更简单的方法来执行此操作。我该如何实现?
解决方法
在PHP 5.3中,可以使用
DateTime::createFromFormat()
方法(或其its3ѭ别名)。
echo DateTime::createFromFormat(
\'YmdHis\',\'20110524153631\'
)->format(\'Y-m-d H:i:s\');
对于早期版本(为什么?),您可以以许多无聊或幻想的方式来处理字符串。
vprintf(\"%s-%s-%s %s:%s:%s\",sscanf(\"20110524153631\",\"%4s%2s%2s%2s%2s%2s\"));
,代替这样做,我们可以使用DateTime功能为我们解析日期:
$date = DateTime::createFromFormat(\'YmdHis\',\'20110524153631\');
echo \"This date is: \" . $date->format(\'Y-m-d H:i:s\') . \"\\n\";
$ php test.php
This date is: 2011-05-24 15:36:31
,$in = \'20110524153631\';
list(
$year,$month,$day,$hour,$minute,$second) = sscanf($in,\'%4d%2d%2d%2d%2d%2d\');
echo sprintf(\'%4d-%02d-%02d %02d:%02d:%02d\',$year,$second);
,$str = \'20110524153631\';
echo preg_replace(\"/(.{4})(.{2})(.{2})(.{2})(.{2})(.{2})/\",\"\\$1-\\$2-\\$3 \\$4:\\$5:\\$6\",$str);
,一个潜在可能:
echo preg_replace(\'/(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})/\',\'$1-$2-$3 $4:$5:$6\',\'20110524153631\');
,为什么不在SELECT或INSERT查询中使用http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。