• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - NSDateFormatter dateFromString 1981-04-01

[复制链接]
菜鸟教程小白 发表于 2022-12-12 15:03:53 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有代码:

NSString *str = @"1981-04-01";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat"yyyy-MM-dd"];
NSDate *back = [dateFormatter dateFromString:str];

NSLog("output: %@", back); //output (null)

当我尝试不同的日期时:

str = @"1982-04-01";//也返回nil

str = @"1985-04-01";//看起来不错,输出:1985-03-31 20:00:00 +0000

看起来我的时区是 GMT+4。 在模拟器中测试:xcode 6.3、ios 8.3 (iphone5s)

为什么 NSDateFormatter 有时返回 nil?

我相信这与我所在的地区有关:爱沙尼亚。 有关 OSX 和 iOS 区域设置的图片。


(来源:ignis.ee)


(来源:ignis.ee)

已解决: 必须是夏令时开关问题。请阅读@Matthias Bauch 后面的评论。

  1. 添加 dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation"GMT"];效果很好!



Best Answer-推荐答案


我建议您将时区设置为像 GMT 一样

dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation"GMT"];

您认为的完整代码。 .

NSString *str = @"1981-04-01";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation"GMT"];
[dateFormatter setDateFormat"yyyy-MM-dd"];
NSDate *back = [dateFormatter dateFromString:str];

NSLog(@"output: %@", back);

你的输出像

output: 1981-04-01 00:00:00 +0000

关于ios - NSDateFormatter dateFromString 1981-04-01,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29621570/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap