2011-11-24 75 views
1

錯了,我有兩個日期(寫在兩個不同的NSString),例如時間的NSDate和NSTimezone

31/12/2011 

31/03/2012 

我要檢查如果今天是在這個範圍內。

對於讀取NSString的日期,我這樣做:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"dd/MM/yyyy"]; 
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 
NSDate *mydate = [dateFormatter dateFromString:my_string]; 
NSLog(@"%@", mydate); 

,但是,在這個例子中,日誌是這樣一個

2011-12-30 23:00:00 +0000 
2012-03-30 23:00:00 +0000 

所以這是1小時後面。 我知道,使用

NSString *string = [dateFormatter stringFromDate:my_date]; 

我的字符串這將是確定的,但我看不出如果今天使用的NSString是範圍(或不?)!

所以我必須使用NSDate,但我該如何解決「時區」問題?

另外,我有這個問題還用

[NSDate date]; 

它返回我一小時前(我不想要它,因爲如果有人檢查,半夜的電話這將是前一天!)

+0

[仍然有NSTimezone正確設置NSDateFormatter結果問題的可能的重複,爲什麼?](http://stackoverflow.com/questions/6957423/still-having-nsdateformatter-result-issues-even-with-nstimezone-正確設置wh) –

回答

1

以下應該有所幫助:

[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]]; 

瞭解更多詳情,請查看This question ......它看起來相似。 「EST」可以替換爲需要的時區。

+0

謝謝,現在它工作...但不是'[NSDate date]'(這是現在的日期):與此我有一個小時前的時間(因爲我認爲它不使用dateFormatter)。我該怎麼做? – JAA

+0

您需要使用dateFormatter才能將其設置爲所需的時區。當然,您可以使用[NSTimeZone defaultTimeZone],然後使用「 - (NSTimeInterval)secondsFromGMT」 – Salil

0

我可能會誤會,但它看起來像你在這種情況下不需要關心時區。如果你的日期格式爲dd/MM/yyyy,那麼當你使用NSDateFormatter解析它時,它將默認使用當前時區。因此,當您將與今天的日期進行比較時,所有3個日期都將處於同一時區,並且不會執行日期/時間調整。

+1

來計算偏移量。如果您未設置時區,它將從GMT偏移。如果您將其設置爲2012年1月1日上午12點,並且未指定時區,則將在美國東部時區時區的2011年12月31日下午6點。 –

+0

是的,我不知道這件事情...但是,這個想法是所有3個NSDate值有相同的時區 – Denis