【问题标题】:strtotime doesn't return value while it works with value as hardcoded stringstrtotime 在将值用作硬编码字符串时不返回值
【发布时间】:2015-07-10 16:04:19
【问题描述】:

我正在从 excel 中读取一些数据并将它们导入数据库。但是遇到了一个奇怪的问题。除了日期部分,一切都很好。代码部分是:

$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);

【问题讨论】:

    标签: php strtotime import-from-excel


    【解决方案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 的东西来传递与字符串内容匹配的格式。

    【讨论】:

    • 我试过 DateTime::createFromFormat 但效果不佳,但我会尝试清理或分成子字符串
    • 谢谢帮助。这绝对是性格问题。我什至无法成功获取 substr,所以我不得不清理除数字之外的所有内容。
    猜你喜欢
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    相关资源
    最近更新 更多