将php中的月/日/年转换为月/日/年


converting m/d/yy to mm/dd/yyyy in php

我从excel拉列与日期,并与代码,我必须验证如果行有日期在它的工作正常,当日期在mm/dd/yyyy(07/05/2015)格式。它通过日期验证函数,我能够抓取该日期并将其存储在mysql日期格式列中。但问题来了,当我阅读excel文件的日期格式m/d/yy(7/5/15)我不确定在什么时候它失败了,但当我看它的数据库的日期被转换为奇怪的日期,并跳过大部分日期从失败的日期验证功能。我想做的是转换字符串我从excel从m/d/yy到mm/dd/yyyy获取之前得到日期验证功能。有人能告诉我怎么才能做到吗?

这是我的函数来验证它的日期。

public function is_date( $str ) /// function to check if its date
    { 
    $stamp = strtotime( $str ); 
    if (!is_numeric($stamp)) 
        return FALSE; 
    $month = date( 'm', $stamp ); 
    $day   = date( 'd', $stamp ); 
    $year  = date( 'Y', $stamp ); 
    if (checkdate($month, $day, $year)) 
        return TRUE; 
    return FALSE; 
    }

这是它获取日期并发送给数据库的部分

 foreach(array_slice($sheetData, $dateRow-1) as $item) 
            { 
                $value = trim($item["{$revCol}"], "$");
                $value = str_replace(",", "", $value);
                $value = str_replace("?", "", $value);
                //check if its date or garbage data
                if ($this->is_date( $item["{$dateCol}"]) /* && $this->isCurrency($temp) */)
                {   
                    $key = $item["{$dateCol}"];
                    $key = date('Y-m-d', strtotime($key));
                    $sold = $item["{$soldCol}"];
                    $params = array('key' => $key);
                    $oldVal->execute($params);
                    $results = $oldVal->fetch(); // fetch old value before replacing with new   
                    $old_rev = $results['rev'];
                    $old_sold = $results['sold'];
                    $diff_rev = $value - $old_rev;
                    $diff_rev = number_format($diff_rev, 2, '.', '');
                    $diff_sold = $sold - $old_sold;
                    //$insertDiff->execute(array($key, $diff_rev, $diff_sold));     
                    $newVal->execute(array($key, $value, $diff_rev, $sold, $diff_sold));
                }       
            }

试试下面的代码来转换它…

$date = "7/5/15";
$your_date = date("m/d/Y", strtotime($date));
echo $your_date;

回复07/05/2015

这里是在线示例

可以将Excel中的列格式设置为带前导零的日期。这似乎是最快的解决办法。

这是你想要的吗?Strtotime理解这样的格式

$str = '7/5/15';
echo date("m/d/Y", strtotime($str)); // 07/05/2015

strtotime应该做这项工作。

尝试用"-"代替"/"

$stamp = strtotime( str_replace('/', '-' ,$str ) );

如果不是,则问题总是以m/d/yy格式发生,或者只是在某些情况下(例如大于12的天数或类似的东西)