将日期转换为正确的格式

时间:2012-11-02 13:37:25

标签: objective-c ios nsdate nsdateformatter

我有一个网络服务,它以下列方式回馈我的日期。

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"

2 个答案:

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