2015-03-13 47 views
0

我有一些日期字符串像這樣:1/1/2010 10:34:11 PM,但我只想要MM/DD/YYYY格式。從NSString中刪除空格後的字符

我試圖通過使用像這樣得到的字符串段之前「」:

NSRange range = [dates[i] rangeOfString:@" "]; 

NSString *newString = [dates[i] substringWithRange:NSMakeRange(0,range.location)]; 

但是,它不能正確地與空間rangeOfString工作。我怎樣才能讓這個工作正常?謝謝!

+0

使用日期格式創建從字符串的日期。使用另一個在日期格式中創建一個字符串。 – vikingosegundo 2015-03-13 13:41:25

+0

您發佈的代碼有什麼問題?它應該工作正常。你不能解釋你得到的結果有什麼問題。 – rmaddy 2015-03-13 15:03:26

回答

1
NSString *dateString = @"1/1/2010 10:34:11 PM"; 

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"dd/MM/yyyy hh:mm:ss aa"]; 

NSDate *date = [formatter dateFromString:dateString]; 

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

NSString *newDateString = [formatter stringFromDate:date]; 

// Output: 1/1/2010 
NSLog(@"new date string is %@", newDateString); 
+1

*咳嗽* https://developer.apple.com/library/ios/qa/qa1480/_index.html – Tommy 2015-03-13 13:53:49

+1

當所有OP想要的都是一個簡單的子字符串時,這是巨大的矯枉過正。 – rmaddy 2015-03-13 15:04:06

2

不這樣做。

只需使用NSDateFormatter。 從NSString轉換爲NSDate - >更改fromat - >轉換爲字符串。

0

雖然你可以使用NSDateFormatter,一個快速和骯髒的方法相似,你嘗試過什麼會使用[NSString componentsSeparatedByString:]

NSArray *dateParts = [dates[i] componentsSeparatedByString:@" "]; 
NSLog(@"%@", dateParts[0]); 
+0

當您只需要第一個值時,使用'componentsSeparatedByString'就會過度殺傷。只需獲取第一個分隔符的範圍,然後獲取子字符串。效率更高。 – rmaddy 2015-03-13 15:02:47

+0

也許,但另一方面,它是一條線。 – 2015-03-13 15:10:14

+0

它實際上是兩個寫作。當然,它可以是一行,就像OP的代碼可以是一行一樣。那不是重點。您的答案最終掃描整個字符串作爲分隔符,然後創建一個包含所有子字符串的數組。而所有你需要的是第一個。得到第一個分隔符(不是全部)的範圍並提取單個子串是非常有效的。不需要數組,不需要掃描整個字符串,也不需要大量浪費的子字符串。 – rmaddy 2015-03-13 15:13:22