首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将荷兰时间字符串转换为时间戳php

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

Stack Overflow用户
提问于 2013-08-08 17:21:29
回答 2查看 3.2K关注 0票数 4

我有一个函数,读取第一行文件中的日期。此日期以荷兰语格式化,如2 mei 2013或28 jun. 2013。

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

代码语言:javascript
复制
function getTimestamp($date){
    date_default_timezone_set('Europe/Amsterdam');
    setlocale(LC_ALL, 'nl_NL');
    $timestamp = strtotime($date);
    return $timestamp;
}

下面是使用此函数时的一些结果:

代码语言:javascript
复制
$timestamp = getTimestamp('28 jun. 2013') //1372370400
$timestamp2 = getTimestamp('2 mei 2013') // false

但是,当我把这些代码放到函数中时

代码语言:javascript
复制
echo strftime('%e %b %Y', 1367445600)."\n";

打印“2 mei 2013”

我如何告诉php不仅用荷兰语格式化日期时间字符串,而且还要用荷兰语读取它?

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

感谢下面的一些解释,我现在可以使用代码了(这是完整的函数)

代码语言:javascript
复制
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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-08 17:41:38

作为 其他 找出,strtotime不尊重设置区域设置。实际上,它在手册中的描述是:“将任何英文文本日期时间描述解析为Unix时间戳”

解决方案

  • 您可以使用strptime(),因为PHP5确实尊重区域设置(比如strftime),但是在php网站上有一些关于使用它的警告。
  • 您可以编写一个函数,将荷兰月份名称替换为英文月份名称,然后调用strtotime。
票数 1
EN

Stack Overflow用户

发布于 2013-08-08 17:41:52

在不创建自己的日期解析器的情况下,本机PHP函数只使用英文日期。

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18132160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档