转换字符串日期格式

时间:2012-10-23 06:14:20

标签: iphone objective-c ios nsdate

我在此格式中有字符串日期“星期二,2012年10月23日01:05:00 +0000”。现在我想将日期格式转换为“ TUE OCT 23 2012 1:05 AM ”。这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:12)

使用此方法。将你的字符串传递给它&根据需要设置日期格式。您将获得所需的日期作为回报。

- (NSDate *) getDateFromString:(NSString *) inputDate
{

    NSDateFormatter *dateForm = [[NSDateFormatter alloc] init];

    [dateForm setDateFormat:@"yyyy-MM-dd"];

    NSDate *dateSelected = [dateForm dateFromString:inputDate];

    [dateForm release];

    return dateSelected;
}

希望它适合你。

=============================================== ================

日期格式选项如下:

现在您需要可以与NSDateFormatter一起使用的所有字符串格式。这是

a:上午/下午

A:0~86399999(毫秒)

c / cc:1~7(星期几)

ccc:周一/周一/周二/周三/周四/周五/周六

cccc:周日/周一/周二/周三/周四/周五/周六

d:1~31(每月填0天)

D:1~366(每年0天填充)

e:1~7(0周填充日)

E~EEE:周日/周一/周二/周三/周四/周五/周六

EEEE:周日/周一/周二/周三/周四/周五/周六

F:1~5(每月0个月,周的第一天=周一)

g:Julian Day Number(自公元前4713年1月1日以来的天数)

G~GGG:BC / AD(时代指示符缩写)

GGGG:在Christ / Anno Domini之前

h:1~12(0小时(12小时))

H:0~23(0填充小时(24小时))

k:1~24(0填充小时(24小时)

K:0~11(0填充小时(12小时))

L / LL:1~12(0个月填充)

LLL:Jan / Feb / Mar / Apr / May / Jun / Jul / Aug / Sep / Oct / Nov / Dec

LLLL:1月/ 2月/ 3月/ 4月/ 5月/ 6月/ 7月/ 8月/ 9月/ 10月/ 11月/ 12月

m:0~59(0填充分钟)

M / MM:1~12(0个月填充)

MMM:Jan / Feb / Mar / Apr / May / Jun / Jul / Aug / Sep / Oct / Nov / Dec

MMMM:1月/ 2月/ 3月/ 4月/ 5月/ 6月/ 7月/ 8月/ 9月/ 10月/ 11月/ 12月

q / qq:1~4(0填充季度)

qqq:Q1 / Q2 / Q3 / Q4

qqqq:第一季度/第二季度/第三季度/第四季度

Q / QQ:1~4(0填充季度)

QQQ:Q1 / Q2 / Q3 / Q4

QQQQ:第一季度/第二季度/第三季度/第四季度

s:0~59(0填充秒)

S :(舍入次秒)

u :( 0填充年份)

v~vvv :( GMT时区缩写)

vvvv :(通用GMT时区名称)

w:1~53(0周填充周,第1天=周日,NB:从去年最后一个星期日开始的第1周)

W:1~5(每月0个月,周的第一天=周日)

是/ yyyy :(全年)

yy / yyy :( 2位数年份)

Y / YYYY :(全年,从一年的第一周的星期日开始)

YY / YYY :( 2位数年份,从一年的第一周的星期日开始)

z~zz :(特定GMT时区缩写)

zzzz :(特定GMT时区名称)

Z:+0000(RFC 822时区)

==========================================

根据需要设置格式..

答案 1 :(得分:3)

NSString *dateStr = @"Tue, 25 May 2010 12:53:58 +0000";

// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EE, d LLLL yyyy HH:mm:ss Z"];
NSDate *date = [dateFormat dateFromString:dateStr]; 

但首先

  1. 创建NSDateFormatter以将日期字符串转换为NSDate 对象。
  2. 创建第二个NSDateFormatter(或更改。的格式字符串 首先)将NSDate转换回字符串。
  3. 这会有点帮助???

    修改

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
    [dateFormatter setDateFormat:@"yyyy-MM-ddHH:mm:ss"];
    NSDate *date = [dateFormatter dateFromString:@"2011-04-0600:28:27"];
    

答案 2 :(得分:2)

使用此波纹管方法传递日期...

       -(NSString *)StringFromDate:(NSString *)DateLocal{
        DateLocal = [self trimString:DateLocal];
        NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];   
        [dateFormatter setDateFormat:@"EEE, dd LLL yyyy hh:mm:ss Z"];

        NSDate *date = [dateFormatter dateFromString: DateLocal];
        NSString *tt = [dateFormatter stringFromDate:date];
        NSDate *dateReturn = [dateFormatter dateFromString:tt];


        NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
        [dateFormat setDateFormat:@"EEE LLL dd yyyy hh:mm a"];
        NSString *dateString = [dateFormat stringFromDate:dateReturn];  
        NSLog(@"Date is HERE  =====>> %@",dateString);
        [dateFormat release];
        return dateString;
    }