【问题标题】:Carbon PHP Get Timestamp from Open/Close HoursCarbon PHP 从开放/关闭时间获取时间戳
【发布时间】:2018-03-26 23:44:11
【问题描述】:

我将小时数存储在我的数据库中,如下所示

8 pm to 2 am

8pm - 2am
8 pm - 2 am

当我尝试使用 Carbon 格式化这些时,我收到一个关于没有分钟的错误,我需要做的就是将 Carbon::now() 与引用的打开/关闭时间进行比较

这是我的代码

$barDays = barDays::where('bar_id', $Bar->id)->where('day_id', $day)->first();
if($barDays === NULL) {
    $barDays = barDays::create([
        'bar_id' => $Bar->id,
        'day_id' => $day,
        'hours' => $Bar->hours,
        'musicType' => $Bar->musicType,
        'type' => $Bar->type
    ]);
    $barDays->save();
} else {
    $barDays = $barDays->hours;
}
$hours = explode(' - ', $barDays, 2);
if(count($hours) < 2) {
    $hours = explode(' to ', $barDays, 2);
} elseif(count($hours) < 2) {
    $hours = explode(' – ', $barDays, 2);
}
if($hours === ['Closed']) {
    $Bar->numPeople = 0;
    $Bar->hours = 'Closed';
    $Bar->save();
} else {
    try {
        $openHours = $hours[0];
        $closedHours = $hours[1];
    } catch(\Exception $e) {
        return $hours;
    }
    $open = Carbon::createFromTime($openHours, $Bar->timezone);
    $closed = Carbon::parse($closedHours, $Bar->timezone)->addDays(1);

我得到的确切错误是找不到两位数的分钟数据丢失

但是我该如何纠正呢?

【问题讨论】:

  • docs 中显示:Carbon::createFromTime($hour, $minute, $second, $tz);
  • 对,并不是要包括那个,它不允许专门用于 AM/PM,这将是一个问题

标签: php laravel php-carbon


【解决方案1】:

一方面,我不建议将原始数据存储为2 pm 等。从长远来看,实际的日期时间会对您有所帮助。

如果你必须,在你的号码后面加上一个:00,并在用 Carbon 解析时使用它。

【讨论】:

  • 但是如何更好地存储它?它们不是时间戳,因为它们每天都随着时间戳而变化
【解决方案2】:

方法Carbon::createFromTime 期望arg $hour 是24 小时格式,试试这个简单的sn-p

$stringHours = '8 pm to 2 am';

$hours = array_map(function($hour) {
        $open = substr($hour, -2) === 'pm'
            ? intval($hour) + 12
            : intval($hour);

        return $open < 24 ? $open : 0;
    }, explode(' to ', $stringHours)
);

Carbon::createFromTime($hours[0], 0, 0, $tz);

//more code...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 2016-09-22
    • 1970-01-01
    • 2015-12-19
    相关资源
    最近更新 更多