我正在尝试从此转换日期:
2012-06-26 12:00:00 +0000
到此:
Jun 26, 2012 12:00:00 AM
如果我使用此代码,它可以工作:
NSString *inputString = @"2012-06-25 12:00:00 +0000";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss z"];//input
NSDate *date = [formatter dateFromString:inputString];
[formatter setDateFormat:@"MMM dd, yyyy hh:mm:ss a"];
NSString *outputString = [formatter stringFromDate:date];
NSLog(@"Output Date is: %@" , outputString);
并且打印日期正确:Jun 26, 2012 12:00:00 AM
然而,当我不对日期进行硬编码时,事情变得非常奇怪,但是使用函数来获取它。代码:
NSString *inputString2 = [self.selectedDate description];
NSLog(@"%@",inputString2);
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss z"];//input
NSDate *date = [formatter dateFromString:inputString2];
[formatter setDateFormat:@"MMM dd, yyyy hh:mm:ss a"];
NSString *outputString = [formatter stringFromDate:date];
NSLog(@"Output Date is: %@" , outputString);
当我在代码的开头打印inpuString2变量只是为了确保函数正确传递日期我有:2012-06-25 12:00:00 +0000
这是正确的日期。但是现在打印时输出日期是零!
任何想法?这怎么可能?
答案 0 :(得分:3)
格式化程序的日期格式字符串
你有
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss z"];
尝试改为
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
注意: HH 不是......而 Z 不是z。
RE:第二个格式化程序字符串 - 您可以将其更改为
[formatter setDateFormat:@"MMM dd, yyyy HH:mm:ss a"];
(但我以为你只是在询问 nil )
答案 1 :(得分:0)
假设selectedDate
日期为NSDate
,而不是转换使用以下
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd, yyyy hh:mm:ss a"];
NSString *outputString = [formatter stringFromDate:self.selectedDate];
NSLog(@"Output Date is: %@" , outputString);
这可能无法解答您的问题,但它应该给您正确的日期