Big*_*Boy 1 iphone objective-c nsdate nsdateformatter ios
我有时间: 7:46 am
我想将其转换为NSDate.我这样做:
NSDateFormatter *f = [NSDateFormatter new];
[f setDateFormat:@"h:mm a"];
NSDate *sr = [f dateFromString:@"7:46 am"];
Run Code Online (Sandbox Code Playgroud)
我sr和NSLog 得到了1969-12-31 22:46:00 +0000
那些时间不一样.为什么这么搞砸了?
不,这并不奇怪.NSDateConverter和NSDate正在这里做他们想做的工作.
您正在尝试转换"7:46 am"为日期.它只包含时间.字符串中未指定日期."1970-01-01"如果没有指定日期,NSDate将默认为(Unix纪元).因此,在转换字符串后,您将获得日期"1970-01-01 7:46 am".当您尝试在NSLog中显示此项时,if将在调整timeZone偏移值后显示日期.我想你住在日本或韩国.可能您所在地区的偏移量为+09:00.因此它显示减去偏移量的日期.所以你"1969-12-31 22:46:00 +0000"在日志中看到了.
您可以使用以下方法将该时间设置为特定日期,可能是今天.
NSString *timeStr = @"7:46 am";
NSDateFormatter *f = [NSDateFormatter new];
[f setDateFormat:@"yyyy-MM-dd"];
NSString *dateStr = [f stringFromDate:[NSDate date]]; // dateStr = 2011-06-10
dateStr = [dateStr stringByAppendingFormat:@" %@", timeStr]; // dateStr = 2011-06-10 7:46 am
[f setDateFormat:@"yyyy-MM-dd h:mm a"];
NSDate *sr = [f dateFromString:dateStr];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |