【问题标题】:How do I convert from NSString to NSDate?如何从 NSString 转换为 NSDate?
【发布时间】:2023-03-25 03:06:01
【问题描述】:

如何从 NSString 转换为 NSDate ?

NSString转NSDate格式时必须是yyyy-MM-dd HH:mm:ss这种格式

【问题讨论】:

标签: iphone cocoa cocoa-touch


【解决方案1】:

使用 NSDateFormatter 的 dateFromString:

NSString *dateStr = @"20100212";

// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMdd"];
NSDate *date = [dateFormat dateFromString:dateStr];  

// Convert date object to desired output format
[dateFormat setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
dateStr = [dateFormat stringFromDate:date];  
[dateFormat release];

【讨论】:

    【解决方案2】:
    【解决方案3】:

    为此做了一个 NSString 扩展

    // Simple as this.   
    date = dateString.dateValue;
    

    感谢NSDataDetector,它可以识别很多格式。

    // Tested in GMT+1 (Hungary).
    @"2014-01-16" dateValue is <2014-01-16 11:00:00 +0000>
    @"2014.01.16" dateValue is <2014-01-16 11:00:00 +0000>
    @"2014/01/16" dateValue is <2014-01-16 11:00:00 +0000>
    @"2014 Jan 16" dateValue is <2014-01-16 11:00:00 +0000>
    @"2014 Jan 16th" dateValue is <2014-01-16 11:00:00 +0000>
    @"20140116" dateValue is <2014-01-16 11:00:00 +0000>
    @"01-16-2014" dateValue is <2014-01-16 11:00:00 +0000>
    @"01.16.2014" dateValue is <2014-01-16 11:00:00 +0000>
    @"01/16/2014" dateValue is <2014-01-16 11:00:00 +0000>
    @"16 January 2014" dateValue is <2014-01-16 11:00:00 +0000>
    @"01-16-2014 17:05:05" dateValue is <2014-01-16 16:05:05 +0000>
    @"01-16-2014 T 17:05:05 UTC" dateValue is <2014-01-16 17:05:05 +0000>
    @"17:05, 1 January 2014 (UTC)" dateValue is <2014-01-01 16:05:00 +0000>
    

    eppz!kit 的一部分,从 GitHub 获取类别 NSString+EPPZKit.h

    【讨论】:

      猜你喜欢
      • 2011-11-25
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      • 2011-04-24
      相关资源
      最近更新 更多