首页 > 解决方案 > 将语言更改为阿拉伯语后无法解析时间字符串

问题描述

我不是开发人员,我为 WordPress 下载了主题,但是在将语言更改为阿拉伯语后,我收到了此错误消息

未捕获的异常:DateTime::__construct():无法在位置 0 (�) 解析时间字符串 (٢٠٢٠/٠٢/٠٦ ١٩:٣٠):C:\xampp\htdocs\Carna2\wp-content\themes\ 中的意外字符motor\inc\woocommerce_setups_rental.php:928 堆栈跟踪:#0

这是有错误的代码行

/*$date1 = new DateTime(explode(' ', $values['pickup_date'])[0]);
    $date2 = new DateTime(explode(' ', $values['return_date'])[0]);

    $diff = $date2->diff($date1)->format("%a");*/

    $date1 = new DateTime( $values['calc_pickup_date'] );
    $date2 = new DateTime( $values['calc_return_date'] );

    $diff = $date2->diff( $date1 )->format( "%a.%h" );

    $hm = explode('.', $diff);

请记住我没有任何编码经验thnks

标签: phpwordpress

解决方案


实际上问题在于阿拉伯输入数字,您需要将它们转换为普通数字。

如果您将代码放在下面,它将解决您遇到的错误:

//$values = ['calc_pickup_date' => '٢٠٢٠/٠٢/٠٦ ١٩:٣٠','calc_return_date' => '٢٠٢٠/٠٦/٠٦ ١٩:٣٠' ];

// function that converts arabic numbers to standard digits
$convertNumbers = function($str) {
    $westernArabic = array('0','1','2','3','4','5','6','7','8','9');
    $easternArabic = array('٠','١','٢','٣','٤','٥','٦','٧','٨','٩');
    return str_replace($easternArabic, $westernArabic, $str);
};

$values = array_map($convertNumbers, $values); // convert numbers

// The rest of your code but using converted inputs
$date1 = new DateTime( $values['calc_pickup_date'] );
$date2 = new DateTime( $values['calc_return_date'] );

$diff = $date2->diff( $date1 )->format( "%a.%h" );

$hm = explode('.', $diff);

注意:我想您需要具有开发技能的人或尝试学习一些基础知识,因为这个问题可能只是一个开始......


推荐阅读