<?php
/**
* Created by PhpStorm.
* User: code
* Date: 2018-12-19
* Time: 15:52
*/
namespace App\Repositories\Common\Traits\ModelFieldTraits;
use Illuminate\Support\Carbon;
/**
* 指定 时间区间 有效的业务
*
* 如:
* 1、任何时刻开启 (0 到 86400)
* 2、每天指定时间段开启 (123 到 70000)
* 3、指定日期开启 (2018-12-19 16:03:37 到 2018-12-29 16:03:40)
*
* 数据库设计:
* type,start_time,end_time
* 其中时间用int来保存,非日期的都通过type来保存为(秒)的时间
*/
trait ModelTypeTimeRangeTrait
{
/**
*
*
* @param bool $intBool
* @param int $timeValue
* @return int
*/
public static function getTodayFullTime($intBool, $timeValue)
{
return $intBool ? Carbon::today()->addSecond($timeValue)->getTimestamp() : $timeValue;
}
/**
* 判断当前时间是否在区间内
*
* @param bool $intBool
* @param int $startTime
* @param int $endTime
* @return bool
*/
public static function ifNowBetween($intBool, $startTime, $endTime)
{
return Carbon::now()->between(
Carbon::createFromTimestamp(self::getTodayFullTime($intBool, $startTime)),
Carbon::createFromTimestamp(self::getTodayFullTime($intBool, $endTime))
);
}
/**
* 根据指定的时间戳,判断当前时间是否在区间内
*
* @param int $timestamp
* @param bool $intBool
* @param int $startTime
* @param int $endTime
* @return bool
*/
public static function ifNowBetweenByTimestamp($timestamp, $intBool, $startTime, $endTime)
{
return Carbon::createFromTimestamp($timestamp)->between(
Carbon::createFromTimestamp(self::getTodayFullTime($intBool, $startTime)),
Carbon::createFromTimestamp(self::getTodayFullTime($intBool, $endTime))
);
}
}