我正在使用以下链接http://iosdevelopertips.com/cocoa/date-formatters-examples-take-3.html进行申请,以便从字符串转换日期。
我通过以上教程链接使用下面的代码。当我NSlog
PresentDateTime
时,它给出20120111 13:03:49.263 + 05:30。
因此我采用此格式并希望转换为“EEEE MMMM d, YYYY h:mm a, zzz
”格式。
当我将相同的内容分配给变量
时这样做NSString * today = presentDateTime;
当我NSLog
Datestring
我得到结果NULL
我能知道我哪里出错吗?请通过建议要做的更改来帮助我解决这个问题
//代码
-(NSString *)DateFormat:(NSString *) presentDateTime
{
presentDateTime = [presentDateTime stringByReplacingOccurrencesOfString:@"T" withString:@" "];
presentDateTime = [presentDateTime stringByReplacingOccurrencesOfString:@" +" withString:@"+"];
presentDateTime = [presentDateTime stringByReplacingOccurrencesOfString:@"-" withString:@""];
NSLog(@"Present date::::%@",presentDateTime);
NSString *today = presentDateTime;
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMdd HH:mm:ss:SSSZZZ"];
NSDate *date = [dateFormat dateFromString:today];
[dateFormat setDateFormat:@"EEEE MMMM d, YYYY h:mm a, zzz"];
NSString *dateString = [dateFormat stringFromDate:date];
[dateFormat release];
NSLog(@"dateString:::Date>>>>:%@::::\n%@",dateString, presentDateTime);
return dateString;
答案 0 :(得分:3)
用于解析日期的日期格式模式错误/不完整。对于字符串20120111 13:03:49.263+05:30
,格式为YYYYMMdd HH:mm:ss.SSSZZZ
。有关格式字符串模式,请参阅this table。
修改:在使用代码后,结果显示时区NSDateParser
上的+05:30
扼流圈。它期望+0530
,没有冒号。以下是删除它的方法:
NSString *today = @"20120111 13:03:49.263+05:30";
NSRange colon = [today rangeOfString:@":" options:NSBackwardsSearch];
if (colon.location != NSNotFound) {
today = [today stringByReplacingCharactersInRange:colon withString:@""];
}
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"YYYYMMdd HH:mm:ss.SSSZZZ"];
NSDate *date = [dateFormat dateFromString:today];
NSLog(@"%@", date);
答案 1 :(得分:1)
解析原始日期字符串时,需要指定整个格式,如下所示:
[dateFormat setDateFormat:@"yyyyMMdd HH:mm:ss.SSSZZZ"]
答案 2 :(得分:-1)
将您的代码与以下内容进行比较
NSString *dateString = @"6:30 18 Oct";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh:mm dd/MMM"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:dateString];
[dateFormatter release];
它只是样本。并通过在nslog中打印它来弄清楚出了什么问题。
答案 3 :(得分:-2)
您的date
变量始终为零,因为您的日期格式(yyyyMMdd
)不完整,因为您的输入字符串today
包含额外信息(20120111 13:03:49.263+05:30
)。所以你可以裁剪不必要的字符:
if ([presentDateTime count] < 8) return nil;
NSString *today = [presentDateTime substringToIndex:8];
或者您应该指定@jonkroll
所述的完整日期格式