如何在dd / MM / YYYY中格式化NSDate

时间:2013-09-03 10:51:20

标签: ios objective-c nsstring nsdate

我正在尝试将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

然后当我使用时:

[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

感谢您的帮助

8 个答案:

答案 0 :(得分:37)

你必须这样做,但请先检查你的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。相同。

答案 1 :(得分:3)

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

希望这有帮助。

答案 2 :(得分:3)

以[日期格式设置日期格式:@“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 ];

我希望它有所帮助。

答案 3 :(得分:2)

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

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

下的文档中

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

答案 4 :(得分:2)

只需使用以下代码即可获得结果:

//时间戳转换

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

答案 5 :(得分:1)

将日期格式化程序设置为

 [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 ];

答案 6 :(得分:0)

Have a look at DateFormatters to use required formats: Apple Doc

答案 7 :(得分:0)

** 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];**