自unix时间戳以来是不是有一种流行的显示时间的方法?
Posted
技术标签:
【中文标题】自unix时间戳以来是不是有一种流行的显示时间的方法?【英文标题】:Is there a popular method of displaying time since a unix timestamp?自unix时间戳以来是否有一种流行的显示时间的方法? 【发布时间】:2013-02-14 23:43:29 【问题描述】:我已经用 php 完成了数百次,但现在我正在学习 xcode,但我无法弄清楚。我正在尝试在这样的 tableView 单元格上显示 Unix 时间戳 - >“10 分钟 24 秒前”、“4 小时、2 分钟前”或“2 天 4 小时前”。有什么想法吗?
【问题讨论】:
也许 C 变体(使用strftime
、time
、localtime
)可以完成这项工作?
***.com/questions/741830/…
【参考方案1】:
我遇到了同样的事情,这是我想出的 unix 时间戳:
-(NSString *)timeSinceNow:(float)timestamp
NSMutableString *time = [[NSMutableString alloc]init];
NSTimeInterval ti = [[NSDate date] timeIntervalSince1970];
float diff = ti - timestamp;
//days
if (diff<60*60*24*365)
[time appendString:[NSString stringWithFormat:@"%d day", (int)floor(diff/(60*60*24))]];
//hours
if (diff<60*60*24)
[time appendString:[NSString stringWithFormat:@"%d hour", (int)floor(diff/(60*60))]];
//minutes
if (diff<60*60)
[time appendString:[NSString stringWithFormat:@"%d minute", (int)floor(diff/(60))]];
//seconds
if (diff<60)
[time appendString:[NSString stringWithFormat:@"%d second", (int)floor(diff)]];
//years
if (diff>=60*60*24*365)
[time appendString:[NSString stringWithFormat:@"%d year", (int)floor(diff/(60*60*24*365))]];
//check if its not singular (plural) - add 's' if so
if (![[time substringToIndex:2] isEqualToString:@"1 "])
[time appendString:@"s"];
return time;
【讨论】:
【参考方案2】:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDateFormatter/setDoesRelativeDateFormatting:
这个有一个简单的例子。
【讨论】:
【参考方案3】:NSDate *now = [NSDate 日期];
应该建立差异,然后将其绑定到单元格
【讨论】:
【参考方案4】:试试这个第三方库:https://github.com/billgarrison/SORelativeDateTransformer
您可以通过 CocoaPods 安装它,或者使用 README 中的说明进行安装。
如果您想推出自己的解决方案,您可以使用+[NSDate dateWithTimeIntervalSinceReferenceDate:]
获取距当前时间的秒数,传入当前时间的参考日期+[NSDate date]
。通过使用适当的单位划分结果,您应该能够获得所需的粒度级别。
SORelativeDateTransformer 更进一步,通过巧妙地使用-[NSBundle localizedStringForKey:value:table:]
实现本地化。
【讨论】:
以上是关于自unix时间戳以来是不是有一种流行的显示时间的方法?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我需要在 JavaScript 中将 unix 时间戳乘以 1000?