You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP strtotime()转换错误:解析XPathDom获取的土耳其日期返回false求助

咱先理清楚问题根源:strtotime() 默认对非英文的日期本地化名称支持不太友好,尤其是土耳其语这种带特殊字符的月份、星期名,它没法直接识别。下面给你两个靠谱的解决办法:

解决方案1:利用DateTime类配合本地化设置

PHP的DateTime系列函数对本地化日期的支持比strtotime更灵活,只要服务器配置了对应的本地化环境就能用:

// 先清理字符串前后的多余空格(原示例字符串有前后空格)
$dateStr = trim($value[0]->nodeValue);

// 设置土耳其语本地化环境(根据服务器情况选合适的locale值)
setlocale(LC_TIME, 'tr_TR.UTF-8', 'tr_TR', 'turkish');

// 定义匹配土耳其语日期的格式:日 月份 年 星期 时分
$format = 'j F Y l H:i';

// 创建DateTime对象并解析日期
$date = DateTime::createFromFormat($format, $dateStr);

if ($date !== false) {
    // 转换为时间戳
    $timestamp = $date->getTimestamp();
    var_dump($timestamp); // 会输出对应的时间戳
} else {
    echo '日期解析失败,请检查格式或本地化设置';
}

注意点:

  • 要确保你的服务器已经安装了土耳其语的locale包,如果是Linux服务器,可以用locale -a命令查看是否有tr_TR.UTF-8这类条目,没有的话需要安装对应语言包。
  • 格式字符串里的j代表不带前导零的日期,F是完整月份名称,Y是四位年份,l是完整星期名称,H:i是24小时制的时分,完全匹配你拿到的日期字符串结构。

解决方案2:手动映射本地化名称到英文

如果服务器没法配置locale(比如共享主机),那就手动把土耳其语的月份、星期替换成英文,再用strtotime解析:

// 清理字符串前后空格
$dateStr = trim($value[0]->nodeValue);

// 土耳其语→英文的月份映射(注意拼写和特殊字符要完全匹配)
$monthMap = [
    'Ocak' => 'January',
    'Şubat' => 'February',
    'Mart' => 'March',
    'Nisan' => 'April',
    'Mayıs' => 'May',
    'Haziran' => 'June',
    'Temmuz' => 'July',
    'Ağustos' => 'August',
    'Eylül' => 'September',
    'Ekim' => 'October',
    'Kasım' => 'November',
    'Aralık' => 'December'
];

// 土耳其语→英文的星期映射
$weekdayMap = [
    'Pazar' => 'Sunday',
    'Pazartesi' => 'Monday',
    'Salı' => 'Tuesday',
    'Çarşamba' => 'Wednesday',
    'Perşembe' => 'Thursday',
    'Cuma' => 'Friday',
    'Cumartesi' => 'Saturday'
];

// 替换字符串里的本地化名称
$englishDate = str_replace(array_keys($monthMap), array_values($monthMap), $dateStr);
$englishDate = str_replace(array_keys($weekdayMap), array_values($weekdayMap), $englishDate);

// 现在调用strtotime就没问题了
$timestamp = strtotime($englishDate);
if ($timestamp !== false) {
    var_dump($timestamp);
} else {
    echo '替换后的日期格式仍无法识别,请检查映射是否正确';
}

优势:

这个方案不依赖服务器的locale配置,兼容性更强,而且你能完全控制替换的内容,避免因locale版本差异导致的问题。

内容的提问来源于stack exchange,提问作者Enes Yurtlu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:47:08