Fel*_*lix 8 iphone formatting time objective-c
我需要一种方法来将NSTimeInterval(以秒为单位的时间跨度)格式化为字符串,以产生类似"大约10分钟前","1小时,20分钟"或"小于1分钟"的内容.
-(NSString*) formattedTimeSpan:(NSTimeInterval)interval;
Run Code Online (Sandbox Code Playgroud)
目标平台是iOS.欢迎使用示例代码.
Nic*_*ver 30
这是NSDate的一个类别.它并没有完全使用NSTimeInterval,内部很好:)我假设你正在使用时间戳.
头文件NSDate + PrettyDate.h
@interface NSDate (PrettyDate)
- (NSString *)prettyDate;
@end
Run Code Online (Sandbox Code Playgroud)
实施NSDate + PrettyDate.m
@implementation NSDate (PrettyDate)
- (NSString *)prettyDate
{
NSString * prettyTimestamp;
float delta = [self timeIntervalSinceNow] * -1;
if (delta < 60) {
prettyTimestamp = @"just now";
} else if (delta < 120) {
prettyTimestamp = @"one minute ago";
} else if (delta < 3600) {
prettyTimestamp = [NSString stringWithFormat:@"%d minutes ago", (int) floor(delta/60.0) ];
} else if (delta < 7200) {
prettyTimestamp = @"one hour ago";
} else if (delta < 86400) {
prettyTimestamp = [NSString stringWithFormat:@"%d hours ago", (int) floor(delta/3600.0) ];
} else if (delta < ( 86400 * 2 ) ) {
prettyTimestamp = @"one day ago";
} else if (delta < ( 86400 * 7 ) ) {
prettyTimestamp = [NSString stringWithFormat:@"%d days ago", (int) floor(delta/86400.0) ];
} else {
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
prettyTimestamp = [NSString stringWithFormat:@"on %@", [formatter stringFromDate:self]];
[formatter release];
}
return prettyTimestamp;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3141 次 |
| 最近记录: |