我正在試圖解決如何確定給定的時間戳是今天發生還是+1/-1天。從本質上講,我想這樣做(僞)Swift - 檢查一個時間戳是昨天,今天,明天還是X天前
IF days_from_today(timestamp) == -1 RETURN 'Yesterday'
ELSE IF days_from_today(timestamp) == 0 RETURN 'Today'
ELSE IF days_from_today(timestamp) == 1 RETURN 'Tomorrow'
ELSE IF days_from_today(timestamp) < 1 RETURN days_from_today(timestamp) + ' days ago'
ELSE RETURN 'In ' + days_from_today(timestamp) + ' ago'
最重要的是,雖然,它需要在斯威夫特,我用的NSDate/NSCalendar對象掙扎。我開始工作了時差是這樣的:
let calendar = NSCalendar.currentCalendar()
let date = NSDate(timeIntervalSince1970: Double(timestamp))
let timeDifference = calendar.components([.Second,.Minute,.Day,.Hour],
fromDate: date, toDate: NSDate(), options: NSCalendarOptions())
這種方式比較。然而是不容易的,因爲.Day
取決於一天和時間戳的時間是不同的。在PHP中,我只是使用mktime根據一天的開始創建一個新日期(即mktime(0,0,0)
),但我不確定在Swift中這樣做的最簡單方法。
有沒有人有關於如何解決這個問題的好主意?也許NSDate或類似的擴展是最好的?
謝謝!頂部看起來很完美。下半部分可能在上午10點,但時間戳可能在明天上午9點,如果明天上午11點會有不同的結果。或者我誤解了這是如何工作的? – Ben
好東西,再次感謝。我做的唯一的改變是前幾天的行,通過添加一個'abs'來消除否定,即'返回「\(abs(天))天前」' – Ben
當然,謝謝:-) – vadian