【问题标题】:Convert NSString to Chunks of NSString that has a date format将 NSString 转换为具有日期格式的 NSString 块
【发布时间】:2010-02-16 15:44:42
【问题描述】:

这可能很简单。我找了,还没找到。

如何将 NSString @"20100216190205" 转换为格式为 @"yyyy-MM-dd HH:mm:ss" 的 NSString。

即:@"2010-02-16 19:02:05"

编辑: 在其他情况下,我想避免使用 NSDateFormatter 更通用。

【问题讨论】:

  • 你为什么不想使用 NSDateFormatter?它们实施起来并不难,而且是专门为此目的而设计的。见:developer.apple.com/mac/library/documentation/Cocoa/Conceptual/…
  • 为什么说“不使用 NSDateFormatter”?只是因为你的例子不起作用?你是如何创建格式化程序的?
  • 有编辑。我希望它更清楚。

标签: iphone nsstring nsdate nsdateformatter nsdatecomponents


【解决方案1】:

您可以提取每个子字符串,将它们转换为整数 (-intValue),然后使用 NSDateComponents 将它们转换为日期。而且比使用 NSDateFormatter 麻烦多了。

在您的情况下,NSDateFormatter 的格式需要在调用-dateFromString: 之前设置为yyyyMMddHHmmss,即

[formatter setDateFormat:@"yyyyMMddHHmmss"];
NSDate *date = [formatter dateFromString:@"20100216190205"];
....

【讨论】:

  • 谢谢。我得到了它。我应该使用:[格式化程序 setDateFormat:@"yyyyMMddHHmmss"];
【解决方案2】:

纯粹作为编写代码的练习:

NSString* digits = @"20100216190205"; // this is probably a parameter somewhere
NSMutableString* formatted = [digits mutableCopy];
[formatted insertString:@":" atIndex:12];
[formatted insertString:@":" atIndex:10];
[formatted insertString:@" " atIndex:8];
[formatted insertString:@"-" atIndex:6];
[formatted insertString:@"-" atIndex:4];
NSLog(@"original string: %@ -> formatted: %@", digits, formatted);

但我同意:对自己放轻松,为此使用日期格式化程序。

【讨论】:

    【解决方案3】:

    您需要将formatter 的格式设置为 yyyyMMddHHmmss 以解析示例中的字符串。您需要创建一个新的格式化程序或修改原始格式化程序的格式以合并您想要的更具视觉吸引力的格式 (@"yyyy-MM-dd HH:mm:ss")。

    【讨论】:

      猜你喜欢
      • 2011-08-02
      • 2015-12-26
      • 2011-05-18
      • 2013-12-08
      • 2013-11-09
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      • 2014-01-20
      相关资源
      最近更新 更多