2013-08-19 166 views
-1

我想使用NSDateFormatter將以下字符串轉換爲NSDate:2013-08-19 7:00 AM將字符串轉換爲NSDate

但是,創建了以下NSDate:2013-08-19 04:00:00 +0000。時間不對。

我的代碼如下。我不知道我做錯了什麼。

NSDateFormatter *dateFormatter = [NSDateFormatter new]; 
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm a"]; 
NSString *string = @"2013-08-19 7:00 AM"; 
NSDate *dateFromString = [dateFormatter dateFromString:string]; 
+0

也許問題是你沒有指定一個時區。你在什麼時區? – LuisCien

+0

@LuisCien我沒有意識到這一點很重要。我想創建兩個日期對象(例如上午7點和上午11點)並計算兩次之間的秒數。 –

+0

我也有過這個「問題」。不是一個真正的問題,但你沒有時區設置。 NSDate不包括時區。 – Jamie

回答

4

您試圖在小時上使用24小時格式的AM/PM指示符,並且這樣做不起作用。更改行:

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm a"]; 

這樣:

[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm a"]; 

,你會發現你的代碼現在的作品。

-2

您看到「+0000」的原因意味着操作系統正在將您的時間字符串轉換爲UTC。要解決這個問題,你只需要設置你的本地時區。

dateFormatter.timeZone = YOUR_LOCAL_TIMEZONE; 

此外,打印您的日期在您的本地設置,您可以使用NSDateFormatter的:

localizedStringFromDate:dateStyle:timeStyle: 

希望這有助於!

+0

是否正確:'[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];' –

+0

它仍然返回4點。 –

+0

@JackHumphries請看我更新的答案。乾杯! – LuisCien