7

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

谢谢你的帮助

4

8 回答 8

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.

于 2013-09-03T10:56:58.830 回答
3

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

希望这可以帮助。

于 2013-09-03T11:01:23.310 回答
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 ];

我希望它会有所帮助。

于 2013-09-03T11:16:07.380 回答
2

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

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

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

于 2013-09-03T11:10:36.487 回答
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]];
于 2013-09-03T11:23:06.170 回答
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 ];
于 2013-09-03T10:53:05.767 回答
0

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

于 2015-10-06T09:04:48.550 回答
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];**
于 2017-05-02T05:10:52.943 回答