你好我想问一件事,我有NSString作为时间,我想在NSDate时间转换这个字符串我已经这样做但我不知道我得到了什么........
NSString *Time=@"17:00:00";
NSDateFormatter *dateFormatter3 = [[NSDateFormatter alloc] init];
[dateFormatter3 setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter3 setDateFormat:@"HH:mm:ss"];
NSDate *date1 = [dateFormatter3 dateFromString:Time];
NSLog(@"date1 : %@", date1);
输出: date1:2000-01-01 11:30:00 +0000
我想只有正确的时间17:00:00作为NSDate格式...怎么能得到这个? ....
请解决这个问题...... !!!
答案 0 :(得分:5)
设置时区以获得正确的输出尝试此代码,
NSString *Time=@"17:00:00";
NSDateFormatter *dateFormatter3 = [[NSDateFormatter alloc] init];
[dateFormatter3 setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[dateFormatter3 setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter3 setDateFormat:@"HH:mm:ss"];
NSDate *date1 = [dateFormatter3 dateFromString:Time];
NSLog(@"date1 : %@", date1);
答案 1 :(得分:0)
试试这个:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[[NSLocale alloc]
initWithLocaleIdentifier:@"en_US"]];
[formatter setDateFormat:@"HH:mm:ss"];
NSString *etaStr = @"17:00:00";
NSDate *generatedDate = [formatter dateFromString:etaStr];
NSLog(@"%@", [formatter stringFromDate:generatedDate]);
答案 2 :(得分:0)
这对我有用:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"HH:mm:ss";
NSLog(@"%@", [formatter stringFromDate:[NSDate date]]); // 07:23:38
NSDate *date = [formatter dateFromString:@"17:00:00"]; // 2000-01-01 15:00:00 +0000
NSLog(@"%@", date);
答案 3 :(得分:0)
试试这个,
NSString *Time=@"17:00:00";
NSDateFormatter *dateFormatter3 = [[NSDateFormatter alloc] init];
[dateFormatter3 setDateFormat:@"HH:mm:ss"];
NSDate *date1 = [dateFormatter3 dateFromString:Time];
NSLog(@"date1 : %@", date1);
或者使用这些功能,
#define DATE_COMPONENTS (NSYearCalendarUnit| NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSWeekdayCalendarUnit | NSWeekdayOrdinalCalendarUnit)
+(NSDateComponents *)componentsForDate:(NSDate *)date
{
if (date!=nil)
{
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dayComponents =
[gregorian components:DATE_COMPONENTS fromDate:date];
return dayComponents;
}
return nil;
}
+(NSString *)timeFromNSDate:(NSDate *)date
{
int hour=[self componentsForDate:date].hour;
int minute=[self componentsForDate:date].minute;
int second=[self componentsForDate:date].second;
NSString *returnDateString= [NSString stringWithFormat:@"%d:%d:%d",hour, minute,second];
return returnDateString;
}
答案 4 :(得分:0)
您在日志中获得的内容可能是正确的日期。 NSLog - 完全符合:-description(NSDate) - 以UTC格式打印出日期。
顺便说一句:您应该将日期样式设置为无。
答案 5 :(得分:0)
这是因为 NSDate 是日期和时间的组合。当您打印任何NSDate时,它将以此格式打印。但是这个NSDate的NSString显示了你真正想要的东西。所以只需从您的日期
获取 NSStringNSString *dateString = [dateFormatter3 stringFromDate:date1];
NSLog(@"date : %@ , date string : %@", date1, [dateFormatter3 stringFromDate:date1]);