当我们传递不带时间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
?
答案 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))
。