我有一个网络服务,它以下列方式回馈我的日期。
Wed Oct 31 11:59:44 +0000 2012
但我希望它以这种方式回馈
31-10-2012 11:59
我知道应该使用NSDateFormatter。但我现在不知道如何以正确的方式实现它。
我有类似的事情。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"dd/MM/yyyy"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT+0:00"]];
NSDate *date = [dateFormatter dateFromString:[genkInfo objectForKey:DATE]];
有人能帮助我吗?
亲切的问候。
目前的代码
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"E MMM d hh:mm:ss Z y"];
NSDate *date = [f dateFromString:@"Wed Oct 31 11:59:44 +0000 2012"];
NSDateFormatter *f2 = [[NSDateFormatter alloc] init];
[f2 setDateFormat:@"dd-MM-y hh:mm"];
[f2 setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSString *date2 = [f2 stringFromDate:date];
网络服务布局
"text": "KRC Genk | Zaterdag is er opnieuw een open stadiontour http://t.co/tSbZ2fYG",
"created_at": "Fri Nov 02 12:49:34 +0000 2012"
答案 0 :(得分:2)
步骤1:创建一个NSDateFormatter,通过将格式设置为“服务器字符串”的格式,将字符串从服务器转换为NSDate对象
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"E MMM d hh:mm:ss Z y"];
NSDate *date = [f dateFromString:@"Wed Oct 31 11:59:44 +0000 2012"];
步骤2:使用所需的输出字符串创建另一个NSDateFormatter,并使用新的NSDateFormatter将新的NSDate对象转换为字符串对象
NSDateFormatter *f2 = [[NSDateFormatter alloc] init];
[f2 setDateFormat:@"dd-MM-y hh:mm"];
[f2 setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSString *s = [f2 stringFromDate:date];
desiredformat = s;
P.S。我不确定f格式,请查看此链接 http://www.developers-life.com/nsdateformatter-and-uifont.html
答案 1 :(得分:0)
您的格式字符串存在一些问题,无法解析原始日期。并且区域设置未正确设置。无需设置时区。这将从提供的日期/时间字符串处理。
NSDateFormatter *f = [[NSDateFormatter alloc] init];
NSLocale *posix = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[f setLocale:posix];
[f setDateFormat:@"EEE MMM dd hh:mm:ss Z yyyy"];
NSDate *date = [f dateFromString:@"Wed Oct 31 11:59:44 +0000 2012"];
每当您解析(或格式化)不是来自用户或来自用户的固定格式日期时,您都希望使用en_US_POSIX语言环境。请勿使用en_US_POSIX语言环境向用户显示日期或时间。