【问题标题】:Change date string format更改日期字符串格式
【发布时间】:2016-06-25 18:49:21
【问题描述】:

我有一个这样的日期字符串:

22-04-2016 8:00:00 AM

如何将格式更改为04-22-2016 8:00:00 AM?

我尝试了以下方法:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM-dd-yyyy"];

NSLog(@"%@", [dateFormat dateFromString:[cell scheduledDate]]);

但这会返回nil。如何更改此字符串的格式? [cell scheduledDate] 是一个字符串。

【问题讨论】:

  • 日期没有格式。 string 具有格式。你实际上有什么,日期还是字符串?

标签: objective-c cocoa cocoa-touch nsstring nsdateformatter


【解决方案1】:

你可以这样说:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//Set the AM and PM symbols
[dateFormatter setAMSymbol:@"AM"];
[dateFormatter setPMSymbol:@"PM"];
[dateFormatter setDateFormat:@"dd-MM-yyyy h:mm:ss a"]; 
NSDate *currentDate = [dateFormatter dateFromString:[cell scheduledDate]];

把它送到 NSDate。然后正如马特建议的那样,使用另一个 NSDateFormatter 将其转换为不同的字符串。我同意他的反对意见,但也许无法将信息保留为日期。

【讨论】:

  • currentDate 返回 null :( 我希望在格式更改后将其更改回 NSString。
  • 我编辑了我的答案。我使用的是斜线,并把日期和月份调换了,应该是@"dd-MM-yyyy h:mm:ss a"
【解决方案2】:

如果您拥有的是一个应该表示日期的字符串,而您想要以不同的方式表示该日期,那么实际上您将需要两个日期格式化程序,一个将字符串转换为日期, 和另一个将该日期转换为新字符串。 (你并不真的需要两个格式化程序;你真正需要的是两种格式。但如果你使用两个格式化程序会更简单。)

请注意,将字符串转换为日期的格式化程序必须匹配您开始使用的字符串的格式。你的没有。

【讨论】:

  • 但请注意,最好将此信息作为日期进行维护。 String-to-date-to-string 是一种难闻的气味。
猜你喜欢
  • 1970-01-01
  • 2011-05-04
  • 2023-03-18
  • 2022-07-04
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
相关资源
最近更新 更多