-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTLDateUtilities.m
89 lines (74 loc) · 2.76 KB
/
TLDateUtilities.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//
// TLDateUtilities.m
// Posto7
//
// Created by Thumb Labs on 4/19/13.
// Copyright (c) 2013 posto7. All rights reserved.
//
#import "TLDateUtilities.h"
#define TL_MINUTE 60
#define TL_HOUR (60 * TL_MINUTE)
#define TL_DAY (24 * TL_HOUR)
#define TL_WEEK (7 * TL_DAY)
#define TL_MONTH (30.5 * TL_DAY)
#define TL_YEAR (365 * TL_DAY)
@implementation TLDateUtilities
+ (NSString*)relativeTimeStringForDate:(NSDate *)date
{
NSTimeInterval elapsed = abs([date timeIntervalSinceNow]);
if (elapsed < TL_MINUTE) {
return NSLocalizedString(@"just now", @"just now");
}
else if (elapsed < TL_HOUR) {
int mins = (int)(elapsed / TL_MINUTE);
return [NSString stringWithFormat:NSLocalizedString(@"%dm ago", @"%dm ago"), mins];
}
else if (elapsed < TL_DAY) {
int hours = (int)((elapsed + TL_HOUR / 2) / TL_HOUR);
return [NSString stringWithFormat:NSLocalizedString(@"%dh ago", @"%dh ago"), hours];
}
else if (elapsed < TL_WEEK) {
int day = (int)((elapsed + TL_DAY / 2) / TL_DAY);
return [NSString stringWithFormat:NSLocalizedString(@"%dd ago", @"%dd ago"), day];
}
else if (elapsed < TL_MONTH) {
int weeks = (int)((elapsed + TL_WEEK / 2) / TL_WEEK);
return [NSString stringWithFormat:NSLocalizedString(@"%dw ago", @"%dw ago"), weeks];
}
else if (elapsed < TL_YEAR) {
int months = (int)((elapsed + TL_MONTH / 2) / TL_MONTH);
return [NSString stringWithFormat:NSLocalizedString(@"%dmo ago", @"%dmo ago"), months];
}
else {
int years = (int)((elapsed + TL_YEAR / 2) / TL_YEAR);
return [NSString stringWithFormat:NSLocalizedString(@"%dy ago", @"%dy ago"), years];
}
}
+ (NSDate *)dateFromSqlString:(NSString *)dateString
{
if (!dateString) return nil;
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
return [dateFormatter dateFromString:dateString];
}
+ (NSString *)timeTodayDayOfWeekOrFullDate:(NSDate *)date
{
NSTimeInterval elapsed = abs([date timeIntervalSinceNow]);
if (elapsed < TL_DAY) {
NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateFormat:@"h:mm a"];
return [formatter stringFromDate:date];
}
else if (elapsed < TL_WEEK) {
NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateFormat:@"EEEE"];
return [formatter stringFromDate:date];
}
else {
NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateFormat:@"MMM dd, yyyy"];
return [formatter stringFromDate:date];
}
}
@end