如何在iOS中获得Nsdate格式的时间?

时间:2013-10-29 05:17:28

标签: ios iphone objective-c

你好我想问一件事,我有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格式...怎么能得到这个? ....
请解决这个问题...... !!!

6 个答案:

答案 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格式打印出日期。

Unexpected value from NSDate

顺便说一句:您应该将日期样式设置为无。

答案 5 :(得分:0)

这是因为 NSDate 是日期和时间的组合。当您打印任何NSDate时,它将以此格式打印。但是这个NSDate的NSString显示了你真正想要的东西。所以只需从您的日期

获取 NSString
NSString *dateString = [dateFormatter3 stringFromDate:date1];
 NSLog(@"date : %@ , date string : %@", date1, [dateFormatter3 stringFromDate:date1]);