我用日期从excel中提取列,使用代码我必须验证行中的日期是否在mm/dd/yyyy (07/05/2015)格式的日期中正常工作。它通过日期验证函数,我可以获取该日期,并将其存储在mysql日期格式列中。但是,当我读取具有日期格式为m/d/yy (7/5/15)的excel文件时,出现了问题,我不知道它在什么地方出错,但当我查看它时,数据库中的日期被转换成了奇怪的日期,并且它从file验证函数中跳过了大部分日期。我想要做的是将从excel获取的字符串从m/d/yy转换为mm/dd/yy,然后再得到日期验证函数。有人能告诉我怎么做到这一点吗?
这是我的功能来验证它的日期。
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));
}
}发布于 2015-07-14 19:28:48
试试这段代码来转换它..。
$date = "7/5/15";
$your_date = date("m/d/Y", strtotime($date));
echo $your_date;它将呼应2015年05年7月7日
这里有一个在线的例子
发布于 2015-07-14 19:25:26
这就是你想要的吗?strtotime取消这种格式。
$str = '7/5/15';
echo date("m/d/Y", strtotime($str)); // 07/05/2015发布于 2015-07-14 19:27:55
可以将Excel中的列格式化为带前导零的日期。这似乎是最快的解决办法。
https://stackoverflow.com/questions/31415486
复制相似问题