我有问题。我已经尝试创建一种方法来获得时间,如“14小时前”,但它似乎没有工作。所以我需要帮助创建一个从创建数据库行/项目开始需要几秒钟的函数。因此,如果db行是在600秒前创建的,这意味着该函数将在“10分钟前”输出?我想让它返回秒,分钟,小时,周,月或年。我知道它可能非常简单,我似乎无法把它弄好......
OH,这适用于iPhone应用程序,因此它使用objective-c。
非常感谢任何帮助。
这就是我当前的目标:
-(NSString *)timeSinceTimestamp:(NSString *)seconds{
double seconds2 = [seconds doubleValue];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:seconds2];
NSDate *now = [NSDate date];
double start = [date timeIntervalSince1970];
double end = [now timeIntervalSince1970];
double difference = (end - start) / 1000;
difference = round(difference);
int minutes = difference / 60;
int hours = minutes / 60;
int days = hours / 24;
int weeks = days / 7;
int months = weeks / 5;
int years = months / 12;
NSString *string;
if(difference < 60){
string = [NSString stringWithFormat:@"%i seconds ago",difference];
}else if (minutes > 1 && minutes < 60) {
string = [NSString stringWithFormat:@"%i minutes ago",minutes];
}else if (hours > 1 && hours < 24) {
string = [NSString stringWithFormat:@"%i hours ago",hours];
}else if (days > 1 && days < 7) {
string = [NSString stringWithFormat:@"%i days ago",days];
}else if (weeks > 1 && weeks < 5) {
string = [NSString stringWithFormat:@"%i weeks ago",weeks];
}else if (months > 1 && months < 12) {
string = [NSString stringWithFormat:@"%i months ago",months];
}else if (years > 1 && years < 12) {
string = [NSString stringWithFormat:@"%i years ago",years];
}
return string;
}
答案 0 :(得分:0)
文档中有Calendrical Calculations的整个部分。
如果您有创建日期 - 并且您有自创建日期以来经过的秒数 - 您可以使用该文档中描述的方法计算新日期。
答案 1 :(得分:0)
计算delta的秒数。使用NSDate dateWithIntervalSince1970或dateWithIntervalSinceReferenceDate从秒值创建NSDate对象。您可以使用NSDateFormatter将该值格式化为小时/分钟/秒。月份和年份将是错误的但是谁在乎呢?
要计算天数和周数,最简单的方法是将秒数除以24 * 60 * 60得到天数,然后除以7得到几周。几个月和几年是一个问题,因为它们是不规则的,所以如果你想要那个级别的分辨率,你可能最好使用日历计算。如果您知道10000秒前创建了某些内容,则可以使用NSDate dateWithTimeIntervalSinceNow(具有负间隔)来生成该较早时间的日期对象。
[顺便说一句,上面的代码似乎大致正确(我没有仔细检查)。我没有看到任何理由让你无法通过一点努力使其发挥作用。]