ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php – 如何在Carbon实例中添加CarbonInterval实例

2019-08-28 02:28:39  阅读:338  来源: 互联网

标签:php laravel php-carbon


我有一个碳实例

   $a = Carbon\Carbon::now();

   Carbon\Carbon {
     "date": "2018-06-11 10:00:00",
     "timezone_type": 3,
     "timezone": "Europe/Vienna",
   }

和一个CarbonInterval实例

   $b = CarbonInterval::make('1month');


     Carbon\CarbonInterval {
     "y": 0,
     "m": 1,
     "d": 0,
     "h": 0,
     "i": 0,
     "s": 0,
     "f": 0.0,
     "weekday": 0,
     "weekday_behavior": 0,
     "first_last_day_of": 0,
     "invert": 0,
     "days": false,
     "special_type": 0,
     "special_amount": 0,
     "have_weekday_relative": 0,
     "have_special_relative": 0,
   }

如何在碳实例中添加区间以便我得到

   Carbon\Carbon {
     "date": "2018-07-11 10:00:00",
     "timezone_type": 3,
     "timezone": "Europe/Vienna",
   }

我知道解决方案涉及将其转换为时间戳或Datetime类

strtotime( date('Y-m-d H:i:s', strtotime("+1 month", $a->timestamp ) ) );  

这是我目前正在使用的,但我正在寻找一个更加“愚蠢”的方式,我搜索了official site,但无法找到任何东西,所以需要一些帮助.

更新:
只是为了给你上下文
在前端我有两个控件第一个是间隔(天,月,年)第二个是一个文本框,所以根据组合我动态生成字符串,如“2天”,“3个月”等等,然后获取间隔类的馈送

解决方法:

我不知道添加间隔的内置函数,但应该做的是将间隔的总秒数添加到日期:

$date = Carbon::now(); // 2018-06-11 17:54:34
$interval = CarbonInterval::make('1hour');

$laterThisDay = $date->addSeconds($interval->totalSeconds); // 2018-06-11 18:54:34

编辑:找到一个更简单的方法!

$date = Carbon::now(); // 2018-06-11 17:54:34
$interval = CarbonInterval::make('1hour');

$laterThisDay = $date->add($interval); // 2018-06-11 18:54:34

这是因为Carbon基于DateTime而CarbonInterval基于DateInterval.有关方法参考,请参见here.

标签:php,laravel,php-carbon
来源: https://codeday.me/bug/20190828/1747116.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有