PHP Human日期范围/持续时间格式 [英] PHP Human date range/duration format

查看:145
本文介绍了PHP Human日期范围/持续时间格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

PHP如此出色,以至于我想知道是否有满足我需要的功能.

PHP is so well made that I am wondering if there is a function for what I need.

对于持续超过一天的事件,格式化它的人工方式很复杂.

For events that last more than one day, the human way to format it is complex.

示例...

事件一:从2015年4月20日至2015年4月22日的格式可以这样写给人类:2015年4月20日至22日

Event one: from 2015-04-20 to 2015-04-22 could be formatted for humans like this: April 20-22 2015

事件二:从2015-04-01到2015-05-31人类-> 2015年4月-5月

Event two: from 2015-04-01 to 2015-05-31 Humans -> April-May 2015

事件三:从2015-04-30至2015-05-02人类-> 2015年4月30日至5月2日

Event three: from 2015-04-30 to 2015-05-02 Humans -> April 30 to May 2 2015

简而言之,永远不要重复不需要重复的事情.尽可能与-"链接.

In short, never repeat what doesn't needs to be repeated. Link with "-" as much as possible.

必须将其本地化,并且格式可能会因本地而异.例如,美国人喜欢MonthName DayNumber Year,而法国人喜欢DayNumber MonthName Year.

It will have to be localized and the format could change depending of the local. For exemple, US folks like MonthName DayNumber Year but French like DayNumber MonthName Year.

我打算对这种格式进行编程,但是我想知道它是否已经存在:)

I was planning on programming such formatting, but I was wondering if it already existed :)

推荐答案

这有效...

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

但是我确实认为,在某些情况下,甚至人类都需要被告知4月至5月将在1日开始并在31日结束.

But I do think in some situations, even human beings need to be told that April-May will begin the 1st and end the 31st.

这篇关于PHP Human日期范围/持续时间格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆