首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试从NSDate日期时间字符串格式化MySQL时获得(null)结果

尝试从NSDate日期时间字符串格式化MySQL时获得(null)结果
EN

Stack Overflow用户
提问于 2014-05-20 17:34:13
回答 2查看 348关注 0票数 0

我有以下代码:

代码语言:javascript
运行
复制
- (NSString *)
  lastSeenDateString:(NSString *)dateString
{
  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  [dateFormatter setTimeZone:[NSTimeZone defaultTimeZone]];
  [dateFormatter setDateFormat:@"yyyy-MM-ddTHH:mm:ssZ"];
  NSDate *date = [dateFormatter dateFromString:dateString];

  NSString *result = [NSDateFormatter localizedStringFromDate:date dateStyle:NSDateFormatterShortStyle timeStyle:NSDateFormatterShortStyle];

  return result;
}

dateString变量如下所示(我输出到日志以确保):2014-0520T17:23:42.000Z

当输出到日志时,date变量显示:(null)

我尝试删除setTimeZone方法,将setDateFormat更改为许多不同的东西(“yyyy”-“MM”-‘dd’HH‘:’MM‘’s‘z’,“yyyy:MM:ss”,“yyyy”等等)。但什么都不管用。无论我做什么,它都返回null。我看过许多其他StackOverflow问题,回答了同样的问题,以及谷歌上的其他示例,我的代码似乎与公认的答案一致。然而,仍然只有一个空的NSDate变量结果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-20 17:46:56

输入与格式不匹配。

代码语言:javascript
运行
复制
 [dateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSSZ" ];
票数 0
EN

Stack Overflow用户

发布于 2014-05-20 18:29:38

您需要将T放在单引号中,并且应该在格式字符串中包含毫秒SSS

您的日期字符串似乎是RFC 3339日期。如技术问答1480中所述,要确保处理不同的国际日历设置,需要在en_US_POSIX区域设置中解析该设置。

因此:

代码语言:javascript
运行
复制
- (NSString *)lastSeenDateString:(NSString *)dateString
{
    NSLocale *enUSPOSIXLocale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];

    // parse RFC 3339 date

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.locale = enUSPOSIXLocale;
    dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSZ";
    NSDate *date = [dateFormatter dateFromString:dateString];

    // switch back to current locale

    dateFormatter.locale = [NSLocale currentLocale];

    return [NSDateFormatter localizedStringFromDate:date dateStyle:NSDateFormatterShortStyle timeStyle:NSDateFormatterShortStyle];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23766415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档