将法国日期字符串转换为英语日期以进行比较

时间:2018-02-27 23:51:17

标签: php

我正在运行一个多语言的WordPress网站,我需要将自定义帖子类型的元数值与当前日期进行比较。

在英语中,我将用户输入的start_date与系统时间进行比较时相当直接:

$postStartDate = strtotime(get_field('start_date'));
$currDate = strtotime(date('F j, Y'));

if ($postStartDate > $currDate):
  // Show the post
endif;

我无法使用WordPress内置的发布日期,因为我的客户提前设置了帖子,它们应该在元start_date过去之前一直有效。

然而,当我尝试运行与法语类似的东西时,它失败了,因为strtotime()期望英语。公平。所以,我读了一下关于setlocale()strftime()的内容,最后尝试了这样的事情:

$frenchDate = strftime("%d %b %Y", strtotime(get_field('start_date')));

当然,这也失败了,因为strtotime()无法理解'Janvier'与'1月'等等,因此它不会立即启动。在这种情况下,strftime()只是在1970年1月1日吐出。

这不是法国服务器环境,只是一个双语网站。

将法语日期字符串与当前系统日期进行比较的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

当无法更改整体网站架构时,我能想出的最佳解决方案是创建一个关联数组,将法语字符串映射回英语Node={} Node[(6,6)]=[(6,5),(6,7),(5,6),(7,6)] Node[(1,3)]=[(1,4),(2,3)] 以理解:

strtotime()

小写字符串然后取法语月份并将其替换为var monthMap = { 'janvier' => 'january', ... } 以创建英语日期。

有点hacky?是。但是在没有任何其他答案的情况下,它可以工作(只要所有法国月份都由输入用户拼写正确!)