奇怪的日期格式行为,iOS

时间:2012-06-25 14:16:23

标签: ios date format

我正在尝试从此转换日期:

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这是正确的日期。但是现在打印时输出日期是零!

任何想法?这怎么可能?

2 个答案:

答案 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);

这可能无法解答您的问题,但它应该给您正确的日期