2013-04-18 94 views
1

我试图根据用户所在的国家更改我的dateformat。更改日期格式(保留“变量”)

目前我已经想出了这一点:

function format_date($date = '', $format=null) 
    { 
     if($date == "0000-00-00") return ""; 
     $DateTime = new DateTime($date); 
       if(!$format){ 
        $CI =& get_instance(); 
        switch($CI->session->userdata("country")){ 
         case 3: 
          $format = "d-m-Y H:i:s"; 
         break; 
         default: 
          $format = "Y-m-d H:i:s"; 
         break; 
        } 
       } 
       return $DateTime->format($format); 
    } 

但如果$日期的格式是:

2013年3月15日15时50分30秒

我想输出为:

15-03-2013 15:50:30

,如果格式为:

2013年3月15日

我所要的输出是:

15-03-2013

代替:

15-03-2013 00:00:00

如果你想要的参数格式是,我应该强制它的格式。

编辑:

有时我们只需要2013-04-12 16:52。

而且它应该能够过到这里格式:/

回答

0

使用mkdate

/* 2013-04-18 */ 
echo date("Y-m-d", mktime(0, 0, 0, 12, 30, 1997)); 

/* 18-04-2013 */ 
echo date("d-m-Y", mktime(0, 0, 0, 12, 30, 1997)); 

更多的例子,你在php.net page

0
function format_date($date = '', $format=null) 
{ 
    if($date == "0000-00-00") return ""; 

    // Compare len of str $date 
    if(strlen($date) > 10) 
     $his = " H:i:s"; 
    else 
     $his = ""; 
    $DateTime = new DateTime($date); 
      if(!$format){ 
       $CI =& get_instance(); 
       switch($CI->session->userdata("country")){ 
        case 3: 
         $format = "d-m-Y" . $his; 
        break; 
        default: 
         $format = "Y-m-d" . $his; 
        break; 
       } 
      } 
      return $DateTime->format($format); 
} 
0

找到你可以使用strpos检查字符串是否包含空格(然后显然有时间戳)。

我已经创建了一个函数,你需要一个$date参数例如。 2012-01-01 01:00:002012-02-03,$dateFormat如果没有指定时间则为date()格式,并且如果指定了时间具有,则$dateTimeFormatdate()格式。

<?php 
    function DateFormatDynamic($date, $dateFormat, $dateTimeFormat) { 
     $unixTime = strtotime($date); 
     if (strpos($date, " ") !== false) { 
      return date($dateTimeFormat, $unixTime); 
     } else { 
      return date($dateFormat, $unixTime); 
     } 
    } 

    var_dump(DateFormatDynamic("2013-03-15", "d-m-Y", "d-m-Y H:i:s")); 
    //string(10) "15-03-2013" 

    var_dump(DateFormatDynamic("2013-03-15 15:23:00", "d-m-Y", "d-m-Y H:i:s")); 
    //string(19) "15-03-2013 15:23:00" 

    var_dump(DateFormatDynamic("2013-03-15 15:23", "d-m-Y", "d-m-Y H:i")); 
    //string(19) "15-03-2013 15:23" 
?> 

DEMO

0

您也可以尝试验证日期格式

$d = '2013-03-15 15:50:30'; 
$d2 = '2013-03-15'; 

function myFormatDate($d){ 
    $format = 'd-m-Y'; 
    if(count(explode(' ',$d)) > 1) 
     $format = 'd-m-Y H:i:s'; 
    return date($format, strtotime($d)); 
} 

var_dump(myFormatDate($d)); 
var_dump(myFormatDate($d2)); 
0

位哈克的解决方案后,但你可以使用:

$date = $DateTime->format($format); 

if (strpos($date, '00:00:00')) { 

    $date = substr($date, 0, strpos($date, '00:00:00') - 1); 
} 

return $date; 

的JIST如果日期包含00:00:00,则删除该部分的字符串和- 1帐户的日期和时间之间的空间。