2015-07-10 67 views
1

我正在读取一些来自excel的数据并将它们导入到数据库。但有一个奇怪的问题。除日期部分外,一切都很好。该代码段为:strtotime不返回值,而它与硬编码字符串的值一起工作

$dob = $cells[$i][6]; 
echo $dob.'<br>'; 
$timestamp = strtotime($dob); 
echo 'time- '.$timestamp; 
echo 'time2- '.strtotime('01-01-2000');exit; 

,输出是:

01-01-2000 
time- time2- 946677600 

我在Excel文件中使用的值是完全一样的01-01-2000,你可以从输出中看到。

我不明白为什么strtotime函数可以为硬编码字符串版本返回一个值,但不能从excel文件读取变量?

感谢您的任何帮助。

解决方案: 如果有人面临同样的问题,这是我如何处理它。

$dob_temp = $cells[$i][6]; 
$dob_numbers = preg_replace("/[^0-9]/","",$dob_temp); 
$timestamp = strtotime(substr($dob_numbers,0,2).'-'.substr($dob_numbers,2,2).'-'.substr($dob_numbers,4,4)); 
$dob = date('Y-m-d', $timestamp); 

回答

1

这可能是因为您从Excel文件检索字符串有一些奇怪的字符 - 比如一个破折号,而不是其绊倒了strtotime连字符。

例子:

<?php 
$dob = '01―01―2000'; 
echo $dob.'<br>'; 
$timestamp = strtotime($dob); 
echo 'time- '.$timestamp; 
echo 'time2- '.strtotime('01-01-2000');exit; 

http://codepad.org/zKIqeHhO

您可能要清理日期从文件来或使用类似DateTime::createFromFormat通过该字符串的内容相一致的格式。

+0

我试过DateTime :: createFromFormat,但没有工作,但我会尝试清理或分成子字符串 –

+0

thnx的帮助。这绝对是一个性格问题。我甚至无法成功获得substr,因此我必须清除除数字之外的所有内容。 –

相关问题