我的任务是将字符串随时间解析为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 CET ,我不明白为什么日期设置为 2000-01-01 ,而不是 2001-01-01 (参考日期)或 1970-01-01 。并且2000-01-01似乎不是随机值...... :)
答案 0 :(得分:0)
如果你想要它只是一个带有日期部分的字符串,只需使用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];
答案 1 :(得分:-1)
你没有传递任何信息。因此,NSDate中的任何其他值都是未定义的。