NSDateFormatter 不会在 NSDate 中转换我的 NSString
我有一个字符串,需要将其转换为日期,但它无法正确转换。我不知道为什么......我的代码是:
NSString * fecha = @"2011-12-07 11:11:29.657";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.ZZZ"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:fecha];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
unsigned units = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *components = [calendar components:units
fromDate:dateFromString];
NSInteger* hour = [components hour];
NSInteger* minute = [components minute];
NSInteger* second = [components second];
NSLog(@"Fecha: %@",fecha);
NSLog(@"Format: %@",dateFormatter.dateFormat);
NSLog(@"date: %@",dateFromString);
在我的日志中:
2011-12-07 11:36:11.750 Catalogo-V1[13741:207] Fecha: 2011-12-07 11:11:29.657
2011-12-07 11:36:11.750 Catalogo-V1[13741:207] Format: yyyy-MM-dd HH:mm:ss.ZZZ
2011-12-07 11:36:11.751 Catalogo-V1[13741:207] date: (null)
I have a string and need convert it to a date, but it doesn't convert correctly. I don't know why... my code is:
NSString * fecha = @"2011-12-07 11:11:29.657";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.ZZZ"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:fecha];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
unsigned units = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *components = [calendar components:units
fromDate:dateFromString];
NSInteger* hour = [components hour];
NSInteger* minute = [components minute];
NSInteger* second = [components second];
NSLog(@"Fecha: %@",fecha);
NSLog(@"Format: %@",dateFormatter.dateFormat);
NSLog(@"date: %@",dateFromString);
In my log:
2011-12-07 11:36:11.750 Catalogo-V1[13741:207] Fecha: 2011-12-07 11:11:29.657
2011-12-07 11:36:11.750 Catalogo-V1[13741:207] Format: yyyy-MM-dd HH:mm:ss.ZZZ
2011-12-07 11:36:11.751 Catalogo-V1[13741:207] date: (null)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为您需要
yyyy-MM-dd HH:mm:ss.SSS
而不是格式字符串yyyy-MM-dd HH:mm:ss.ZZZ
。ZZZ 是时区值,而 SSS 是秒的小数部分。
请参阅 Unicode 文档(链接自 Apple 文档:数据格式)
编辑:另一件事:您不需要行
NSDate *dateFromString = [[NSDate alloc] init];
。只需调用 NSDate *dateFromString = [dateFormatter dateFromString:fecha]; 即可。日期格式化程序将根据需要分配日期对象。I think that instead of the format string
yyyy-MM-dd HH:mm:ss.ZZZ
, you will wantyyyy-MM-dd HH:mm:ss.SSS
.ZZZ will be a timezone value, whereas SSS is fractional seconds.
See the Unicode documentation (linked from Apple's docs on Data Formatting)
Edit: one other thing: you don't need to have the line
NSDate *dateFromString = [[NSDate alloc] init];
. Just callNSDate *dateFromString = [dateFormatter dateFromString:fecha];
. The date formatter will allocate the date object as it needs to.ZZZ
是一种时区格式,它寻找类似CET
的内容,而不是秒的小数部分。您想要SSS
http://unicode.org/reports /tr35/tr35-10.html#Date_Format_Patterns
ZZZ
is a time zone format, it's looking for something likeCET
not the fractional part of the seconds. You wantSSS
http://unicode.org/reports/tr35/tr35-10.html#Date_Format_Patterns