我有一个函数,读取第一行文件中的日期。此日期以荷兰语格式化,如2 mei 2013或28 jun. 2013。
它需要将日期字符串转换为时间戳,但无论我尝试什么,它都不适用于mei蛾或任何其他名为month的荷兰人。下面是我目前拥有的代码(最初的函数是更多的代码,但这是它出错的地方)
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;
}发布于 2013-08-08 17:41:38
作为 其他 找出,strtotime不尊重设置区域设置。实际上,它在手册中的描述是:“将任何英文文本日期时间描述解析为Unix时间戳”
解决方案
strptime(),因为PHP5确实尊重区域设置(比如strftime),但是在php网站上有一些关于使用它的警告。strtotime。发布于 2013-08-08 17:41:52
在不创建自己的日期解析器的情况下,本机PHP函数只使用英文日期。
但是,有一个可用于PHP的国际日期格式化扩展。您可以安装这个插件,然后就可以解析非英语日期了。
https://stackoverflow.com/questions/18132160
复制相似问题