在laravel中设置一天结束时间,而不是00:00:00

时间:2019-01-08 06:20:10

标签: php laravel datetime php-carbon

当我们传递不带时间2019-01-01的日期值10:00:00时,时间默认为00:00:00。因此,最终将db兼容值转换为2019-01-01 00:00:00。如何强制将其默认设置为23:59:00

示例:我需要设置一个expiry_date属性,但是如果我仅从用户那里获取日期输入2019-01-08,则该用户将假定他们将整天作为到期日期,实际上,由于隐式默认时间2019-01-08,它会在00:00:00的第一秒过期。

我该如何克服?我该如何为expiry_date设置一个变幅器,以将这个2019-01-01 00:00:00变成这个2019-01-01 23:59:00

2 个答案:

答案 0 :(得分:2)

只需使用以下内容:

let mimeType = "video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\""
let asset = AVURLAsset(url: videoURL!, options:["AVURLAssetOutOfBandMIMETypeKey": mimeType])
let playerItem = AVPlayerItem(asset: asset)
avPlayer = AVPlayer(playerItem: playerItem)
self.avPlayerViewConroller?.player = avPlayer
playerItem.addObserver(self, forKeyPath: "status", options: NSKeyValueObservingOptions(), context: nil)
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?)
{
        if(avPlayer?.currentItem?.status == AVPlayerItemStatus.readyToPlay)
        {
            avPlayer?.play()
        }
}

这将采用日期(如果需要,则更新日期格式),切换到一天的结束并将结果对象转换为日期时间字符串。

或者,将其用作属性设置器:

$expiryDate = Carbon::createFromFormat('Y-m-d', $date)->endOfDay()->toDateTimeString();

答案 1 :(得分:1)

您可以使用诸如strtotime()函数之类的东西向当前时间戳添加内容。 $expiry_date = date("Y-m-d H:i:s", strtotime('+5 hours'))

如果函数中需要变量,则必须使用双引号,然后使用strtotime(“ + {$ hours} hours”),但是最好使用strtotime(sprintf("+%d hours", $hours))