如何在MMM中设置日期格式dd,yyyy HH:mm在iPhone中

时间:2012-06-22 10:04:23

标签: iphone objective-c ios5 nsdate nsdateformatter

我想以这种格式设置日期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 个答案:

答案 0 :(得分:4)

Firstoff,NSDate不知道有关日期格式的任何事情。那就是NSDateFormatter进来的地方。

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

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

但是这仍然会导致NSDate持有,秒数并且默认时区设置为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);

答案 1 :(得分: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);

答案 2 :(得分: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);

答案 3 :(得分:0)

 [format setDateFormat:@"YYYY-dd-MM HH:mm:ss z"];