我的任务是将带有时间的字符串解析为 NSDate。我用以下代码做得很好:
NSString* timeStr = @"15:00:00"
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[formatter setDateFormat:@"HH:mm:ss"];
NSDate* result = [formatter dateFromString:timeStr];
但结果我得到2000-01-01 15:00:00(欧洲中部时间)我不明白为什么日期被设置为2000-01-01, not 2001-01-01(这是参考日期)或1970年1月1日。 2000-01-01 似乎不是随机值...:)
如果您希望它只是一个带有日期部分的字符串,只需使用 dateFormatter 即可,与您之前所做的类似。
NSString* timeStr = @"15:00:00";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[formatter setDateFormat:@"HH:mm:ss"];
NSDate* result = [formatter dateFromString:timeStr];
[formatter setDateFormat:@"YYYY-MM-DD"];
timeStr = [formatter stringFromDate:result];
或者您需要直接在日期格式化程序中设置日期字符串,这是因为如果您在日期格式化程序中指定时间字符串,您将得到日期与时间字符串的组合
NSString* dateStr = @"2001-01-01";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[formatter setDateFormat:@"YYYY-MM-DD"];
NSDate* result = [formatter dateFromString:dateStr];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)