2015-07-02 82 views
0

我使用此片段將給定的日期轉換爲字符串。但是如果日期的時間恰好小於5:00,那麼結果就是前一個日期。例如,此日期:「07-01-15 05:00:00 +0000」將正常工作。但是一個「07-01-15 04:49:00 +0000」將會有一個前一個日期作爲結果。使用小bug將NSDate轉換爲NSString

有什麼建議嗎?

+(NSString *)stringFromGivenDate:(NSDate *)date 
{ 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    dateFormatter.dateFormat = @"MM-dd-yy"; 
    NSString *dateString = [dateFormatter stringFromDate:date]; 
    NSLog(@"date: %@", dateString); 
    return dateString; 
} 
+0

什麼 「之前日期」? –

回答

4

NSDateFormatter默認將時區設置爲您的語言環境時區。

但將日期轉換爲字符串會將時間更改爲GMT時間。

所以,你必須設置使用

dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"] 

或任何時區,你想要的時區(如@"GMT+5:30")。

所以你的代碼會像:

+(NSString *)stringFromGivenDate:(NSDate *)date 
{ 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    dateFormatter.dateFormat = @"MM-dd-yy"; 
    dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"] 
    NSString *dateString = [dateFormatter stringFromDate:date]; 
    NSLog(@"date: %@", dateString); 
return dateString; 
}