1

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

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

有任何想法吗??这怎么可能??

4

2 回答 2

3

它是格式化程序的日期格式字符串

你有

[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss z"];

试试吧

[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];

注意:HH不是 hh,Z不是 z。

RE:第二个格式化字符串 - 您可以将其更改为

 [formatter setDateFormat:@"MMM dd, yyyy HH:mm:ss a"];

(但我以为你只是在问nil

于 2012-06-25T14:25:11.930 回答
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);

这可能无法回答您的问题,但它应该为您提供正确的日期

于 2012-06-25T14:25:16.267 回答