2012-12-18 60 views
3

我是新來的領域。這個問題可能很愚蠢。NSDateFormatter提前一年預約12/30/2012和2012年12月31日

NSDateFormatter提前一年的12/30/2012和12/31/2012。對於二零一三年十二月三十日和12/31/2013它也將推動今年出到2014年

我的代碼是:

-(NSString*)getDateOrTime:(NSDate *)inDate formatter:(NSString *)lformat 
{ 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:lformat];//@"MMM-dd-yyyy"]; 
    NSString *currentDate = [formatter stringFromDate:inDate];// here it is giving wrong date 
    // it is happening for only mentioned specific dates only 
    [formatter release]; 

    return currentDate; 
} 

我怎樣才能得到它給我正確的日期?

+1

你能告訴我們你是如何組成你的'inDate'嗎?我現在唯一能想到的情況是,你的日期有一種大量的時區偏移,這使得這一天出現「明天」。 –

+0

我有完全相同的問題。請告訴我,如果你發現如何去。 – Tom

+0

檢查這個答案 http://stackoverflow.com/questions/20627993/date-formater-giving-wrong-date-when-converting-to-string-objective-c – turtle

回答

-1

格式應該如下。

提供的日期格式應爲@"MM-dd-yyyy"

[formatter setDateFormat:lformat];//@"MM-dd-yyyy"]; 

你必須使用MM僅按日期格式。

+0

MMM用於月份名稱的縮寫。 IE瀏覽器。 「Dec」在這種情況下。 –

1

由於您沒有提供關於時區的格式化程序信息,因此NSDateFormatter假定日期爲GMT時間。你需要設置正確的時區 - 無論是dateFormatter或將其添加到字符串..有關於Stack Overflow的數百篇文章。

+0

時區不會更改日期1年... – Tom

+0

當然確實如此 - 如果給定日期是一年的最後一天(如OP所示) – vikingosegundo

+0

雖然它將增加一年,但它不會更改爲1月1日。 – Tom

相關問題