2015-06-23 131 views
-3

我試圖將NSString轉換爲NSDate,如下所示。將NSString轉換爲NSDate

NSString *startTime值是2015-06-23T01:37:53Z
NSDate *startTimeDate值爲。代碼有什麼問題?

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"PST"]]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"]; 
NSDate *startTimeDate = [dateFormatter dateFromString:startTime]; 
+4

只需從您的格式中移除'.SSS'。我希望它會起作用。 – VRAwesome

回答

4

檢查您的日期格式

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"]; 

變化成

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 

斯威夫特

檢查您的日期格式

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 

變化成

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
+0

這是不正確的。不要在格式字符串中引用'Z'。 – rmaddy

0

其簡單的一個,轉換NSStringNSDate我們使用NSDateformatter使用dateFromString方法。我們需要提供NSDateFormatter風格與現有的樣式爲NSString

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 
NSDate *date = [dateFormatter dateFromString:@"2013-02-01T06:25:47Z"]; 
NSTimeZone *pdt = [NSTimeZone timeZoneWithAbbreviation:@"PDT"]; 
[dateFormatter setTimeZone:pdt]; 
[dateFormatter setDateFormat:@"HH:mm:ss zzz"]; 
[dateFormatter setDateFormat:@"K:mm a, z"]; 
NSString * updated String = [dateFormatter stringFromDate:date]; 
+0

@AshishKakkad你真的搞砸了這個人稍微回答我已經糾正。 'Bhumika'儘管在底線上仍然有一個錯字。 – Popeye

+0

@Popeye好吧,謝謝您的指點 –

+0

@AshishKakkad這不是一個巨大的問題,只是我認爲他們發生了一個錯字。快樂的編碼。 – Popeye

1

您指定沒有任何毫秒,因此要使用的日期格式的開始時間:如果你想支持

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 

兩種樣式的XML日期字符串,那麼我建議爲兩種日期格式創建兩個NSDateFormatter實例,如果您從第一個日期獲得零,請嘗試另一個。

+0

這是不正確的。不要在格式字符串中引用'Z'。 – rmaddy

+0

@rmaddy很好的皮卡,我從 – SomeGuy

1

至少有2個問題與您的日期格式:

  • .SSS用於讀取毫秒,但變量startTime不包含毫秒值;

  • Z代表GMT時區並且不能在dateFormat字符串中轉義。

讓我們嘗試解決這個問題ussues:

 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 
    NSDate *startTimeDate = [dateFormatter dateFromString:startTime]; 


我建議使用此​​。這是非常全面和有益的。

+0

格式中刪除了正確識別問題並正確處理時區的唯一答案。 – rmaddy