PHP人力日期范围/持续时间格式(PHP Human date range/duration for

2019-10-22 22:17发布

PHP是这么好做,我想知道如果有什么我需要的功能。

对于持续超过一天的活动,人类的方式对其进行格式化是复杂的。

例子...

活动之一:从2015年4月20日至2015年4月22日可能被格式化为这样的人:4月20-22日2015年

事件二:从2015-04-01到2015年5月31日人类 - >四月至2015年5月

事件三:2015年4月30日至2015年5月2日人类 - > 4月30日至5月2日到2015年

总之,绝不重复什么并不需要重复。 链接以“ - ”尽可能多地。

它必须进行本地化和格式可以根据当地的变化。 对于为例,美国的人喜欢MONTHNAME DayNumber一年,但法国人喜欢DayNumber MONTHNAME年。

我打算等编程格式,但我想知道,如果它已经存在:)

Answer 1:

该工程...

function humanDateRanges($start, $end){
    $startTime=strtotime($start);
    $endTime=strtotime($end);

    if(date('Y',$startTime)!=date('Y',$endTime)){
        echo date('F j, Y',$startTime) . " to " . date('F j, Y',$endTime);
    }else{
        if((date('j',$startTime)==1)&&(date('j',$endTime)==date('t',$endTime))){
            echo date('F',$startTime) . " to " . date('F, Y',$endTime);
        }else{
            if(date('m',$startTime)!=date('m',$endTime)){
                echo date('F j',$startTime) . " to " . date('F j, Y',$endTime);
            }else{
                echo date('F j',$startTime) . " to " . date('j, Y',$endTime);
            }
        }
    }
}

humanDateRanges("2015-04-20", "2015-04-22");
//April 20 to 22, 2015
humanDateRanges("2015-04-01", "2015-05-31");
//April to May, 2015
humanDateRanges("2015-04-30", "2015-05-02");
//April 30 to May 2, 2015
humanDateRanges("2014-05-02", "2015-05-02");
//May 2, 2014 to May 2, 2015

但我认为在某些情况下,甚至人类需要被告知,四月,五月将开始第1和结束31日。



Answer 2:

万一别人绊倒在这样的:我已经写了尝试的方式,还与国际化来解决这个问题,一个小型图书馆:

https://github.com/flack/ranger

它应该包括针对LTR语言合理的默认值(和RTL的支持不应该太难添加)



文章来源: PHP Human date range/duration format
标签: php date format