php - 将语言更改为阿拉伯语后无法解析时间字符串
问题描述
我不是开发人员,我为 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
解决方案
实际上问题在于阿拉伯输入数字,您需要将它们转换为普通数字。
如果您将代码放在下面,它将解决您遇到的错误:
//$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);
注意:我想您需要具有开发技能的人或尝试学习一些基础知识,因为这个问题可能只是一个开始......
推荐阅读
- python - Python数据框从列表中删除句子编号
- pandas - Pandas 按日期分组并在删除重复项时获取计数
- flutter - 如何在自动完成小部件中从外部清除 TextFormField?
- amazon-web-services - 从 Java 程序访问 Amazon S3
- android - 不是让 RN 认为它是电视的方法,即使它不是(修改 uiMode?)
- flutter - 发生异常。RangeError(RangeError(索引):无效值:不在包含范围内 0..4:5)
- flutter - 显示水平滚动条颤动
- android - Android - 如何将 selectableItemBackground 应用于整个 ListView 项目?
- node.js - node.js 提供的静态站点中缺少 s3 密钥错误
- python - Tkinter 两个窗口 OptionMenu 问题