PHP 5.2中的PHP date_parse_from_format()替代 [英] PHP date_parse_from_format( ) alternative in PHP 5.2

查看:232
本文介绍了PHP 5.2中的PHP date_parse_from_format()替代的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于date_parse_from_format()仅在PHP 5.3中可用,我需要编写一个模仿其在PHP 5.2中的行为的函数。



是否可以编写此函数对于PHP 5.2,使其工作方式与PHP 5.3中的工作方式完全相同?



示例:



对于此输入:

 <?php 
$ date =6.1.2009 13:00 + 01:00;
print_r(date_parse_from_format(j.n.Y H:iP,$ date));
?>

我需要输出:

  Array 

[year] => 2009
[month] => 1
[day] => 6
[hour] => 13
[分] => 0
[second] => 0
[fraction] =>
[warning_count] => 0
[warnings] => Array



[error_count] => 0
[errors] => Array



[is_localtime] => 1
[zone_type] => 1
[zone] => -60
[is_dst] =>


解决方案

 <?php 
函数date_parse_from_format($ format,$ date){
$ dMask = array(
'H'=>'hour'
'i'=>'min',
's'=>'second',
'y'=>'year',
'm'= >'month',
'd'=>'day'
);
$ format = preg_split('//',$ format,-1,PREG_SPLIT_NO_EMPTY);
$ date = preg_split('//',$ date,-1,PREG_SPLIT_NO_EMPTY);
foreach($ date as $ k => $ v){
if($ dMask [$ format [$ k]])$ dt [$ dMask [$ format [$ k]]]。 = $ v;
}
return $ dt;
}
?>

示例1:

 <?php 
print_r(date_parse_from_format('mmddyyyy','03232011');
?>

输出1:



数组

[月] => 03
[day] => 23
[year] => 2011



示例2:

 <?php 
print_r(date_parse_from_format('yyyy.mm.dd HH:ii:ss','2011.03.23 12:03:00') );
?>

输出2:



$ p $(
[年] => 2011
[月] => 03
[day] => 23
[hour] = > 12
[分] => 03
[second] => 00


Since date_parse_from_format( ) is available only in PHP 5.3, I need to write a function that mimics its behaviour in PHP 5.2.

Is it possible to write this function for PHP 5.2 and make it work exactly the same way that it does in PHP 5.3?

Example:

For this input:

<?php
$date = "6.1.2009 13:00+01:00";
print_r(date_parse_from_format("j.n.Y H:iP", $date));
?>

I need this output:

Array
(
    [year] => 2009
    [month] => 1
    [day] => 6
    [hour] => 13
    [minute] => 0
    [second] => 0
    [fraction] => 
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 0
    [errors] => Array
        (
        )

    [is_localtime] => 1
    [zone_type] => 1
    [zone] => -60
    [is_dst] => 
)

解决方案

<?php
function date_parse_from_format($format, $date) {
  $dMask = array(
    'H'=>'hour',
    'i'=>'minute',
    's'=>'second',
    'y'=>'year',
    'm'=>'month',
    'd'=>'day'
  );
  $format = preg_split('//', $format, -1, PREG_SPLIT_NO_EMPTY); 
  $date = preg_split('//', $date, -1, PREG_SPLIT_NO_EMPTY); 
  foreach ($date as $k => $v) {
    if ($dMask[$format[$k]]) $dt[$dMask[$format[$k]]] .= $v;
  }
  return $dt;
}
?>

Example 1:

<?php
    print_r(date_parse_from_format('mmddyyyy','03232011');
?>

Output 1:

Array ( [month] => 03 [day] => 23 [year] => 2011 )

Example 2:

 <?php
    print_r(date_parse_from_format('yyyy.mm.dd HH:ii:ss','2011.03.23 12:03:00'));
 ?>

Output 2:

Array ( [year] => 2011 [month] => 03 [day] => 23 [hour] => 12 [minute] => 03 [second] => 00 )

这篇关于PHP 5.2中的PHP date_parse_from_format()替代的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆