@@ -18,6 +18,59 @@ extension NSDate {
1818 public class func now( ) -> Timestamp {
1919 return UInt64 ( 1000 * NSDate( ) . timeIntervalSince1970)
2020 }
21+
22+ public func toRelativeTimeString( ) -> String {
23+
24+ let now = NSDate ( )
25+
26+ let units = NSCalendarUnit . CalendarUnitSecond | NSCalendarUnit . CalendarUnitMinute | NSCalendarUnit . CalendarUnitDay | NSCalendarUnit . CalendarUnitWeekOfYear | NSCalendarUnit . CalendarUnitMonth | NSCalendarUnit . CalendarUnitYear | NSCalendarUnit . CalendarUnitHour
27+
28+ let components = NSCalendar . currentCalendar ( ) . components ( units, fromDate: self , toDate: now, options: NSCalendarOptions . allZeros)
29+
30+ if components. year > 0 {
31+ if components. year > 1 {
32+ return String ( format: NSLocalizedString ( " %@ years ago " , comment: " relative time " ) , String ( components. year) )
33+ } else if components. year == 1 {
34+ return String ( format: NSLocalizedString ( " a year ago " , comment: " relative time " ) )
35+ }
36+ } else if components. month > 0 {
37+ if components. month > 1 {
38+ return String ( format: NSLocalizedString ( " %@ months ago " , comment: " relative time " ) , String ( components. month) )
39+ } else if components. month == 1 {
40+ return String ( format: NSLocalizedString ( " a month ago " , comment: " relative time " ) )
41+ }
42+ } else if components. weekOfYear > 0 {
43+ if components. weekOfYear > 1 {
44+ return String ( format: NSLocalizedString ( " %@ weeks ago " , comment: " relative time " ) , String ( components. weekOfYear) )
45+ } else if components. weekOfYear == 1 {
46+ return String ( format: NSLocalizedString ( " a week ago " , comment: " relative time " ) )
47+ }
48+ } else if components. day > 0 {
49+ if components. day > 1 {
50+ return String ( format: NSLocalizedString ( " %@ days ago " , comment: " relative time " ) , String ( components. day) )
51+ } else if components. day == 1 {
52+ return String ( format: NSLocalizedString ( " a day ago " , comment: " relative time " ) )
53+ }
54+ } else if components. hour > 0 {
55+ if components. hour > 1 {
56+ println ( components. hour)
57+ return String ( format: NSLocalizedString ( " %@ hours ago " , comment: " relative time " ) , String ( components. hour) )
58+ } else if components. hour == 1 {
59+ return String ( format: NSLocalizedString ( " an hour ago " , comment: " relative time " ) )
60+ }
61+ } else if components. minute > 0 {
62+ if components. minute > 1 {
63+ return String ( format: NSLocalizedString ( " %@ minutes ago " , comment: " relative time " ) , String ( components. minute) )
64+ } else if components. minute == 1 {
65+ return String ( format: NSLocalizedString ( " a minute ago " , comment: " relative time " ) )
66+ }
67+ } else {
68+ if components. second >= 10 {
69+ return String ( format: NSLocalizedString ( " %@ seconds ago " , comment: " relative time " ) , String ( components. second) )
70+ }
71+ }
72+ return String ( format: NSLocalizedString ( " just now " , comment: " relative time " ) )
73+ }
2174}
2275
2376public func decimalSecondsStringToTimestamp( input: String ) -> Timestamp ? {
@@ -30,4 +83,10 @@ public func decimalSecondsStringToTimestamp(input: String) -> Timestamp? {
3083public func millisecondsToDecimalSeconds( input: Timestamp ) -> String {
3184 let val : Double = Double ( input) / 1000
3285 return String ( format: " %.2F " , val)
33- }
86+ }
87+
88+ extension Timestamp {
89+ public func toNSDate( ) -> NSDate {
90+ return NSDate ( timeIntervalSince1970: NSTimeInterval ( self / 1000 ) )
91+ }
92+ }
0 commit comments