3

我想以这种格式设置日期 MMM dd, yyyy HH:mm,我已经为此完成了代码,但有一些我不知道的错误。

NSDate *date = [NSDate date];
[format setDateFormat:@"MMM dd, yyyy HH:mm"];
NSLog(@"My date with out format = %@",date);
date = [format dateFromString:[format stringFromDate:date]];
NSLog(@"My date is = %@",date);

输出

我的日期没有格式 = 2012-06-22 09:53:46 +0000
我的日期是 = 2012-06-22 09:53:00 +0000

请帮助我在哪里做错了。

提前致谢。

4

4 回答 4

4

首先,NSDate对日期的格式一无所知。这就是NSDateFormatter进来的地方。

date = [format dateFromString:[format stringFromDate:date]];

您在这里所做的是为给定格式创建一个字符串,这也将导致删除时区。而不是从该字符串创建一个新日期。由于它不再具有时区,它将导致日期与GMT时区相同。

但这仍然会导致 a NSDatewhich hold, seconds 并且默认时区设置为GMT

无需创建新的日期对象,如果要显示日期,只需获取stringFromDate:方法返回的字符串即可。如果您这样做,它将起作用:

NSDate *date = [NSDate date];
[format setDateFormat:@"MMM dd, yyyy HH:mm"];
NSLog(@"My date with out format = %@",date);
NSString *dateString = [format stringFromDate:date];
NSLog(@"My date is = %@",dateString);
于 2012-06-22T10:12:32.813 回答
1

您还没有告诉格式化程序显示秒数,为此添加“HH:mm:ss

NSDate *date = [NSDate date];
[format setDateFormat:@"MMM dd, yyyy HH:mm:ss"];
NSLog(@"My date with out format = %@",date);
date = [format dateFromString:[format stringFromDate:date]];
NSLog(@"My date is = %@",date);
于 2012-06-22T10:08:38.907 回答
1

试试这个:

NSDateFormatter *format = [[NSDateFormatter alloc] init];
    NSDate *date = [NSDate date];
    [format setDateFormat:@"MMM dd, yyyy HH:mm:ss"];
    NSLog(@"My date with out format = %@",date);
    NSString *dateStr = [format stringFromDate:date];

    //date = [format dateFromString:[format stringFromDate:date]];
    NSLog(@"My date is = %@",dateStr);
于 2012-06-22T10:14:38.043 回答
0
 [format setDateFormat:@"YYYY-dd-MM HH:mm:ss z"];
于 2012-06-22T10:09:01.877 回答