【问题标题】:How to format a NSDate in dd/MM/YYYY如何在 dd/MM/YYYY 中格式化 NSDate
【发布时间】:2013-09-03 10:51:20
【问题描述】:

我正在尝试将 NSDate 转换为以下格式:20/05/2014 22:30

这是我目前拥有的代码。 [dateFormat setDateFormat:@"YYYY-MM-dd\'T\'HH:mm:ssZZZZZ"]; 这可行,但格式不像 20/05/2014 22:30 它以如下格式显示日期:12-03-2013 12:00:00 +00:00:00

然后当我使用时:

[dateFormat setDateFormat:@"MM/dd/yyyy"]; 我得到一个 null 返回值而不是格式化日期。

// timestamp conversion
    NSString *str = [timeStamp objectAtIndex:indexPath.row];
    // convert to date
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
  //  [dateFormat setDateFormat:@"YYYY-MM-dd\'T\'HH:mm:ssZZZZZ"];

 [dateFormat setDateFormat:@"MM/dd/yyyy"];

    NSDate *dte = [dateFormat dateFromString:str];
    cell.timeStampLabel.text = [NSString stringWithFormat:@"%@",dte ];

格式化前输出的str原字符串为str 2013-08-23T15:21:19+02:00

感谢您的帮助

【问题讨论】:

  • 您当前已将 nsdate 设置为标签,因此它将类似于 12-03-2013 12:00:00 +00:00:00
  • 对 str 日期格式一无所知,很难将其转换为日期。给我们一个 str 可能值的例子。
  • 很难为这个问题发布一个有用的答案(为了证明,只需看看这里发生的猜测)。您没有告诉我们要将哪个 NSString 转换为 NSDate。
  • 首先要做的是阅读NSDateFormatter 的规范。第二件事是查阅date patterns 的规范(有点难找到)。当你这样做时,你会发现你应该使用“yyyy”,而不是“YYYY”。
  • 第三件要做的事情是了解日期格式描述(duh!!)日期的预期格式!!!

标签: ios objective-c nsstring nsdate


【解决方案1】:

你必须这样做,但请先检查你的 str 的日期格式

NSString *str = [timeStamp objectAtIndex:indexPath.row];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"YYYY-MM-dd\'T\'HH:mm:ssZZZZZ"];


NSDate *dte = [dateFormat dateFromString:str];

[dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"];
cell.timeStampLabel.text = [NSString stringWithFormat:@"%@",[dateFormat stringFromDate:dte]];

第一次设置日期格式与您的 str.

【讨论】:

【解决方案2】:

首先将NSDateFormatter 设置为您接收数据的格式以将其保留到 NSDate 对象中,然后再次使用您想要的格式将其更改为您想要的格式并显示它。有关更多信息,您可以查看 Pratik 答案。

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    在 [dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"] 中设置您的日期格式;这样你的代码写的方式

    // timestamp conversion
    NSString *str = [timeStamp objectAtIndex:indexPath.row];
    // convert to date
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    //  [dateFormat setDateFormat:@"YYYY-MM-dd\'T\'HH:mm:ssZZZZZ"];
    
    [dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"];
    
    NSDate *dte = [dateFormat dateFromString:str];
    cell.timeStampLabel.text = [NSString stringWithFormat:@"%@",dte ];
    

    希望对你有帮助。

    【讨论】:

      【解决方案4】:

      我认为以编程方式强制执行 locale` 及其外观是一个坏主意,除非它已被指定为要求。

      另一种方法是在NSDateFormatter 上使用setDateStyle,以使用System Preferences -> Language & Text -> Region -> Dates 下指定的格式之一。 时间和日期都有 Short 、 Medium 和 Long 格式可供选择。 可用样式列在NSDateFormatterStyle下的文档中

      现在回答您的问题: 如果您将 short time 格式附加到 medium date 格式,那么您将获得所需的结果,同时保持本地化和可定制性。

      【讨论】:

        【解决方案5】:

        只要使用下面的代码,你就会得到结果:

        //时间戳转换

        NSString *str = [timeStamp objectAtIndex:indexPath.row];
        

        // 转换为日期

        NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
        [dateFormat setDateFormat:@"yyyy-MM-dd T HH:mm:ss ZZZZ"];
        
        NSDate *dte = [dateFormat dateFromString:str];
        
        [dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"];
        
        cell.timeStampLabel.text = [NSString stringWithFormat:@"%@",[dateFormat stringFromDate:dte]];
        

        【讨论】:

        • 谢谢,我试过了,但我得到了格式化日期的空值。我原来的str值是:str 2013-08-23T15:21:19+02:00
        • 我已根据您输入的字符串编辑了我的答案。请检查。
        【解决方案6】:

        将您的日期格式化程序设置为

         [dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"];
        

        //时间戳转换

        NSString *str = [timeStamp objectAtIndex:indexPath.row];
        NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
        [dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"];
        
        NSDate *dte = [dateFormat dateFromString:str];
        cell.timeStampLabel.text = [NSString stringWithFormat:@"%@",dte ];
        

        【讨论】:

          【解决方案7】:

          查看 DateFormatters 以使用所需的格式: Apple Doc

          【讨论】:

            【解决方案8】:

            **NSString *strNotificationTimeAndDate="你的日期";

            NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
            [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss.z"];
            

            [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss+z"];
            

            [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ssz"];
            

            [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
            NSDate *commentdate = [dateFormat 
            dateFromString:strNotificationTimeAndDate];**
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-04-07
              • 1970-01-01
              • 2013-11-01
              • 2021-04-19
              • 2016-01-02
              • 1970-01-01
              • 2021-12-23
              • 1970-01-01
              相关资源
              最近更新 更多