在iOS中为我的时间设置AM / PM

时间:2014-03-14 19:04:00

标签: ios datetime time nsdate

我的原始日期格式为:2014-03-14T10:35:24.537

所以我先用componentsSeparatedByString分隔时间和日期,然后将后半部分(时间部分)保存到NSString时间,同时消除微秒。格式为10:35。我试图让它添加PM / AM但是setDateFormat:@" hh:mm a"没有这样做。我究竟做错了什么?

NSArray *components = [datestr componentsSeparatedByString:@"T"];
NSString *time = components[1];
time = [time substringWithRange:NSMakeRange(0, 5)];

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mm a"];
NSDate *timeFromString = [formatter dateFromString:time];
NSLog(@"%@", timeFromString);

当我记录timeFromString时,我得到一个null。

编辑:我将上面的格式化程序更改为[formatter setDateFormat:@" hh:mm"];现在timeFromString记录为:2000-01-01 18:35:00 +0000当数据进入时是2014-03-14T10:35:28.42

2 个答案:

答案 0 :(得分:1)

日期格式化程序用于将日期转换为字符串或从字符串转换日期。单个日期格式化程序不能用于在两种不同的日期格式之间进行转换。 (至少,不要在操作之间改变日期格式化程序。)

使用一个格式化程序将原始字符串转换为日期。该格式化程序不应包含AM / PM,因为原始字符串不包括。

使用第二个格式化程序将日期转换为新字符串。如果您需要,格式化程序应包括AM / PM。

答案 1 :(得分:1)

以下是解析和转换日期的方法:

//the date string
NSString *datestr = @"2014-03-14T10:35:24.537";

//strip the date
NSArray *components = [datestr componentsSeparatedByString:@"T"];
NSString *time = components[1];
time = [time substringWithRange:NSMakeRange(0, 5)];

//parse string to a date
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm"];
NSDate *timeFromString = [formatter dateFromString:time];

//Desired format
NSDateFormatter *timeformat = [[NSDateFormatter alloc] init];
[timeformat setDateFormat:@"hh:mm aa"];
NSString *finalString = [timeformat stringFromDate:timeFromString];

NSLog(@"final = %@",finalString);

输出:

  

final = 10:35 AM