我在全球范围内开发应用程序,功能是我需要将发布时间分别显示为“刚刚”,“1分钟前”,“1小时前”。我在创建帖子时发送日期和时间并发送到webservice.And检索每个帖子的相同日期时间,我需要在每个帖子上显示相对时间(刚才,1小时,1周)。我是从webservice获取实际日期为
“created_date”=“2015-01-29 06:33:02”;
但是当我解析为Nsdate格式时,它将日期返回为
“2015-01-29 01:03:02 +0000”
这是发送服务器的日期和时间代码。
NSDateFormatter *DateFormatter=[[NSDateFormatter alloc] init];
[DateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSLog(@"DateFormatter%@",[DateFormatter stringFromDate:[NSDate date]]);
以下代码我用来格式化字符串到目前为止。
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc]init];
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [dateFormatter dateFromString:[value valueForKey:@"created_date"]];
NSLog(@"Output :%@",date);
如何找到分享后的实际时间。我是客观的新手C.我不确定我做错了什么。请有人帮我解决。
答案 0 :(得分:3)
看起来这里有两个问题。
第一个是关于自然语言日期格式,我认为您可能会发现this相关。
第二个问题看起来你对时区感到困惑。 NSDate将解析您的日期,假设GMT没有任何偏移或ICU时区规范的指示。然后,当您将其打印出来时,可能会使用机器的当前区域设置来格式化输出日期。您应该阅读NSDate和NSDateFormatter对时区的处理。
将日期作为字符串发送到服务器时,您应该将其格式化为:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// Special, agnostic locale
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormatter setLocale:locale];
// GMT
NSTimeZone *timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
[dateFormatter setTimeZone:timeZone];
// ISO 8601
[dateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];
NSLog(@"DateFormatter%@",[dateFormatter stringFromDate:[NSDate date]]);