将荷兰时间字符串转换为时间戳php

时间:2013-08-08 17:21:30

标签: php

我有一个函数可以在第一行的文件中读出日期。此日期的格式为荷兰语,如2 mei 201328 jun. 2013

它需要将日期字符串转换为时间戳,但无论我尝试什么它都不适用于mei飞蛾或任何其他荷兰月份。这是我目前的代码(原始函数是更多的代码,但这是它出错的地方)

function getTimestamp($date){
    date_default_timezone_set('Europe/Amsterdam');
    setlocale(LC_ALL, 'nl_NL');
    $timestamp = strtotime($date);
    return $timestamp;
}

现在,使用此功能时会出现一些结果:

$timestamp = getTimestamp('28 jun. 2013') //1372370400
$timestamp2 = getTimestamp('2 mei 2013') // false

但是,当我把这段代码放在函数

中时
echo strftime('%e %b %Y', 1367445600)."\n";

打印'2 mei 2013'

我怎样才能告诉php不仅用荷兰语格式化日期时间字符串,还用荷兰语读取它?

=======================

感谢下面的一些解释,我现在让代码正常工作(这是完整的功能)

public function getReportDate(){
    $mothsTranslated = array('mrt'=> 'mar','mei'=>'may', 'okt'=>'oct');
    $content = file($this->file);
    $line = $content[0];
    $header = str_getcsv($line, $this->delimiter);
    $date = str_replace('.', '', $header[1]);
    foreach ($mothsTranslated as $dutch => $eng) {
        if(strpos($date, $dutch) !== false){
            $date = str_replace($dutch, $eng, $date);
        }
    }
    $timestamp = strtotime($date);

    return $timestamp;
}

2 个答案:

答案 0 :(得分:2)

如果不创建自己的日期解析器,本机PHP函数只使用英语日期。

但是,有一个适用于PHP的国际dateformatter扩展。您可以安装此插件,然后就可以解析非英语日期。

http://www.php.net/manual/en/intldateformatter.parse.php

答案 1 :(得分:1)

As others found outstrtotime不尊重设置的区域设置。 实际上,它在manual状态中的描述:“将任何英语文本日期时间描述解析为Unix时间戳”

<强>解决方案

  • 您可以使用strptime(),因为PHP5 尊重语言环境(如strftime),但有一些关于在php网站上使用它的警告。

  • 您可以编写一个函数,将荷兰月份名称替换为英文月份名称,然后调用strtotime