【问题标题】:Date range to string for humans日期范围为人类字符串
【发布时间】:2019-11-18 11:12:05
【问题描述】:

我有一个日历系统,所以一个事件有一个start 和一个end 日期。与任何日历一样,end 日期是可选的,也可以与 start 日期相同,但时间不同。

因此,有多种组合可以根据日期向人类显示它(例如在 Google 日历或 Apple 日历等中):

  • 2019 年 1 月 1 日
  • 2019 年 1 月 1 日 08:12
  • 2019 年 1 月 1 日 08:12 至 11:45
  • 2019 年 1 月 1 日至 2019 年 2 月 3 日
  • 2019 年 1 月 1 日 10:15 至 2019 年 2 月 3 日 18:20

Php-Carbon 中是否有内置方法可以做到这一点?我只找到格式化一个日期的方法,但没有找到间隔/期间的方法。谢谢

【问题讨论】:

  • 为什么不简单地$start->format(...) . ' to the ' . $end->format(...)
  • 因为你可以有一个相同的开始和结束日期,只是不同的时间,你会得到1 jan 2019 at 08:12 to 11:45。现在我使用一个自定义方法来完成所有这些检查,但我想知道是否有我错过的内置方法
  • 很公平,但我在文档中没有看到任何这样的东西。我倾向于像你一样写一个包装器。这可能是目前唯一的好方法。

标签: php date php-carbon


【解决方案1】:

如果我正确理解您的问题,您可以这样做:

$period = CarbonPeriod::create($start, $end);

然后你可以遍历这个时间段并做任何你想做的事情。

这是在 Carbon 1.29 中添加的

【讨论】:

    【解决方案2】:

    参考以下代码...

    printf("Right now is %s", Carbon::now()->toDateTimeString());
    printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver')); // automatically converted to string
    $tomorrow = Carbon::now()->addDay();
    $lastWeek = Carbon::now()->subWeek();
    
    // Carbon embed 824 languages:
    echo $tomorrow->locale('fr')->isoFormat('dddd, MMMM Do YYYY, h:mm');
    echo $tomorrow->locale('ar')->isoFormat('dddd, MMMM Do YYYY, h:mm');
    
    $officialDate = Carbon::now()->toRfc2822String();
    
    $howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;
    
    $noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');
    
    $internetWillBlowUpOn = Carbon::create(2038, 01, 19, 3, 14, 7, 'GMT');
    
    if (Carbon::now()->isWeekend()) {
        echo 'Party!';
    }
    echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'
    

    【讨论】:

      【解决方案3】:

      我理解这个问题,所以应该简单地格式化差异:

      $start = new Carbon('1 jan 2019 08:12');
      $end = new Carbon('today');
      
      echo $start->diffForHumans($end);
      //10 months before
      

      【讨论】:

        猜你喜欢
        • 2016-12-10
        • 1970-01-01
        • 1970-01-01
        • 2021-04-27
        • 1970-01-01
        • 2016-10-27
        • 1970-01-01
        • 2016-07-07
        • 1970-01-01
        相关资源
        最近更新 更多