使用 NSDateFormatter 管理日期

Posted

技术标签:

【中文标题】使用 NSDateFormatter 管理日期【英文标题】:Manage date with NSDateFormatter 【发布时间】:2011-05-26 16:36:45 【问题描述】:

我尝试使用 NSDateFormatter 获取和管理日期,但如何使其工作。 我认为这是我的第一个“dateFormatter”格式不正确的问题,因为当我使用带有函数“stringFromDate”和参数“[NSDate date]”的第二个格式化程序时效果很好,但当我使用我的 NSDate 时却不行日期从字符串”。

//"dateString" have this format: "2011-05-26T16:18:26Z"
NSString *dateString = [[tracks objectAtIndex:0] objectForKey:@"to-date"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, MMM d, yyyy"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:dateString];
[dateFormatter release];

dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, MMM d, yyyy"];

//NSString *toDate = [dateFormatter stringFromDate:dateFromString];
NSString *toDate = [dateFormatter stringFromDate:[NSDate date]];

感谢您的帮助:)

【问题讨论】:

对不起,我弄错了。 在将它发送到 dateFormatter 之前,'dateString' 中的内容是什么? 【参考方案1】:

当然,DateFormat 与您从服务器收到的不同。

试试这个:

dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss Z"];
NSDate *date = [dateFormatter dateFromString:[dateString stringByReplacingOccurrencesOfString:@"Z" withString:@" +0000"]];

【讨论】:

【参考方案2】:

假设 to-date 是一个字符串并且还不是 NSDate 试试这个:

//"dateString" have this format: "2011-05-26T16:18:26Z"
NSString *dateString = [[tracks objectAtIndex:0] objectForKey:@"to-date"];
NSDate *dateFromString = [[NSDate dateFromString:dateString];

如果您想以特定格式向用户显示日期,您可以使用设置NSDateFormatter 并使用stringFromDate: 获取字符串以显示用户。如果它仍然无法正确显示,请设置日历(我忘记了您是否总是必须设置它或者是否有默认设置)。

【讨论】:

以上是关于使用 NSDateFormatter 管理日期的主要内容,如果未能解决你的问题,请参考以下文章

使用 NSDateFormatter 快速格式化日期

使用 NSDateFormatter 格式化月份和年份返回无效日期

NSDateFormatter:仅当应用程序针对该语言进行本地化时才显示本地化日期

将事件添加到日历时,NSDateFormatter 未正确格式化日期

NSDateFormatter 将日期从 twitter-timeline 设置为 (null)

使用 NSDateFormatter 从 VBO 文件中解析日期/时间戳