2012-11-02 39 views
1

我有一个web服务,它以以下方式返回我的日期。将日期转换为正确的格式

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]; 

Webservice的布局

"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

希望它能解决您的问题。 http://stackoverflow.com/a/13024673/1111384 – iCreative

+0

很奇怪。它是相同的代码。尝试清理你的项目,并再次运行 –

+0

@RamyKfoury感谢您提前给予的帮助,但清理了我的项目并再次运行,但仍然没有成功。我将编辑我的web服务如何外观的问题。 – Steaphann

回答

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与所需的输出字符串,并使用新的NSDate对象转换为字符串对象的新NSDateFormatter

NSDateFormatter *f2 = [[NSDateFormatter alloc] init]; 
[f2 setDateFormat:@"dd-MM-y hh:mm"]; 
[f2 setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 
NSString *s = [f2 stringFromDate:date]; 

desiredformat = s; 

附:我不知道F格式的,检查此链接 http://www.developers-life.com/nsdateformatter-and-uifont.html

+0

代码会很好,谢谢 – Steaphann

+0

mmm s返回null。 – Steaphann

+0

它应该是MMM,而不是mmm。 – hwaxxer

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语言环境向用户显示日期或时间。