【问题标题】:How to set the date format in MMM dd, yyyy HH:mm in iPhone如何在 iPhone 中的 MMM dd、yyyy HH:mm 中设置日期格式
【发布时间】:2012-06-22 10:04:23
【问题描述】:

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

请帮助我哪里做错了。

提前致谢。

【问题讨论】:

    标签: iphone objective-c ios5 nsdate nsdateformatter


    【解决方案1】:

    首先,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);
    

    【讨论】:

      【解决方案2】:

      您还没有告诉格式化程序显示秒数,为此添加“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);
      

      【讨论】:

      • Omer 我不需要秒我只需要 MMM dd, yyyy HH:mm
      • @FaheemRajput - 请编辑问题以显示您想要的内容,因为此答案使您的格式与没有格式的情况相同
      【解决方案3】:

      试试这个:

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

      【讨论】:

      • 您忘记将语言环境设置为 en_US_POSIX。在处理已定义的日期格式时,您应该始终这样做。
      【解决方案4】:
       [format setDateFormat:@"YYYY-dd-MM HH:mm:ss z"];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-16
        • 2018-02-14
        • 1970-01-01
        • 1970-01-01
        • 2016-05-20
        • 1970-01-01
        • 2021-08-17
        • 1970-01-01
        相关资源
        最近更新 更多