iPhone:将NSString转换为NSDate时没有获得正确的输出

时间:2011-10-24 04:57:32

标签: iphone objective-c ios4 nsdate nsdateformatter

我想将NSString转换为NSDate。

所以我尝试了以下代码:

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"dd-MM-yyyy"];

    NSString *checkInDate = lblCheckIn.text;
    NSString *checkOutDate = lblCheckOut.text;

我在这里得到以下输出。

    NSLog(@"\nCheckIn Date : %@\nCheckOut Date : %@",checkInDate,checkOutDate);
    // CheckIn Date : 26-10-2011
    // CheckOut Date : 29-10-2011

现在我想将此NSString转换为带有dd-MM-yyyy格式的NSDate。

    NSDate *checkOut = [formatter dateFromString:checkOutDate];
    NSDate *checkIn = [formatter dateFromString:checkInDate];
    [formatter release];

但我得到了以下输出。

    NSLog(@"\nCheck In : %@\nCheck Out : %@",checkIn,checkOut);
    // Check In : 2011-10-25 18:30:00 +000
    // Check Out : 2011-10-28 18:30:00 +000

可能出现什么问题?

2 个答案:

答案 0 :(得分:2)

我希望你在+5:30的时区.. 您的代码没有错。它只在GMT时区打印时间。

答案 1 :(得分:1)

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd-MM-yyyy"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[formatter setTimeZone:gmt];
NSString *checkInDate =@"26-10-2011";
NSString *checkOutDate =@"29-10-2011";
NSDate *checkOut = [formatter dateFromString:checkOutDate];
NSDate *checkIn = [formatter dateFromString:checkInDate];

    [formatter release];