【问题标题】:How to convert MySQL datetime to NSDate?如何将 MySQL 日期时间转换为 NSDate?
【发布时间】:2014-06-24 23:48:34
【问题描述】:

MySQL 返回此日期时间:2014-05-07T16:58:44.000Z

如何,使用什么日期时间格式我可以创建 NSDate

据我所知,但它不起作用:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];
NSDate *date = [df dateFromString: valueStr];

【问题讨论】:

    标签: mysql objective-c nsdate nsdateformatter


    【解决方案1】:

    您的格式字符串很接近,但您也想用SSS 指定毫秒:

    [df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSX"];
    

    此外,您的日期字符串中的 Z 代表“Zulu”(即 GMT/UTC),因此您的 dateFormat 应使用不带引号的 ZX,以便正确解析字符串的时区.此外,如果您从日期构建字符串,请确保相应地设置您的时区。您还想设置您的语言环境:

    NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.locale = enUSPOSIXLocale;
    formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSX";
    formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
    

    更多信息请参见Technical Q&A QA1480


    您还可以使用较新的 NSISO8601DateFormatter,它可以让您摆脱一些杂草:

    NSISO8601DateFormatter *formatter = [[NSISO8601DateFormatter alloc] init];
    formatter.formatOptions = NSISO8601DateFormatWithFullDate | NSISO8601DateFormatWithFullTime | NSISO8601DateFormatWithFractionalSeconds;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      相关资源
      最近更新 更多