自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 变体(使用strftimetimelocaltime)可以完成这项工作? ***.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时间戳以来是不是有一种流行的显示时间的方法?的主要内容,如果未能解决你的问题,请参考以下文章

以微秒精度压缩 unix 时间戳

PHP 自函数以来的时间? [复制]

时间戳是啥?

为啥我需要在 JavaScript 中将 unix 时间戳乘以 1000?

Hive/SparkSQL:如何将 Unix 时间戳转换为时间戳(不是字符串)?

如何在 Jooq 中选择 unix 时间戳作为日期?