【问题标题】:Abbreviating two dates by removing duplicate parts using php通过使用 php 删除重复部分来缩写两个日期
【发布时间】:2018-10-04 10:06:16
【问题描述】:

有没有写出两个日期而不重复不必要信息的函数或速记?

例如,如果我通过日期函数打印出 2 个日期,例如

2018 年 10 月 4 日 - 2018 年 10 月 12 日

有没有办法排除重复信息?在这种情况下,我希望它写出的是

2018 年 10 月 4 日至 12 日

因为月份和年份是重复的,但我并不是要求只使用日运算符写出第一个日期。所以如果有可能让它了解它是否也需要写出月份

例如,

2018 年 10 月 29 日 - 2018 年 11 月 3 日

变成

2018 年 10 月 29 日至 11 月 3 日

因为日期和月份不同,但年份不同。

有没有办法做到这一点?

【问题讨论】:

  • 将日期拆分为多个部分,检查年份部分是否匹配,如果匹配则从第一个日期中删除。检查月份部分是否匹配,如果需要也将其删除。然后输出剩下的。
  • 利用 Google 搜索从 Stack Exchange (codereview.stackexchange.com/questions/78295/…) 生成结果
  • 必须写一个自定义函数。 Ref1 , Ref2
  • @DanielProtopopov,啊,这就是我一直在寻找的东西,我不确定要搜索什么,大多数时候它返回的结果是获取日期之间的实际差异而不是格式化代码

标签: php string date


【解决方案1】:

使用explode() 分割日期并使用for 循环返回数组。在循环中检查每个日期项是否相同,将其从数组中删除。循环后使用implode() 将数组转换为字符串。

$date = "29th October 2018";
$date2 ="3rd November 2018";
$exp = explode(" ", $date);
$exp2 = explode(" ", $date2);

for($i=sizeof($exp)-1; $i>0; $i--)
    if ($exp[$i] == $exp2[$i])
        unset($exp[$i]);   

$newDate = implode(" ", $exp)." - ".implode(" ", $exp2);
// 29th October - 3rd November 2018

demo查看结果

【讨论】:

  • 我喜欢这种方法,它既好又简单,它只需要文本字符串并删除重复项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
  • 2019-10-31
相关资源
最近更新 更多