2015-05-29 97 views
0

在哥倫比亞使用該應用程序時,將NSString轉換爲NSDate時得到零的日期,但在印度其工作正常。沒有得到確切的解決方案。有人可以幫忙嗎?從NSString轉換爲NSDate時獲取無日期

我使用這個代碼

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"dd-MM-yyyy"]; 
NSString *newDateString = [dateFormatter stringFromDate:[NSDate date]]; 
NSString *dateString = [NSString stringWithFormat:@"%@ %@",newDateString,@"08:00:00"]; 
NSDateFormatter *dateFormatterToSaveDate = [[NSDateFormatter alloc] init]; 
[dateFormatterToSaveDate setDateFormat:@"dd-MM-yyyy HH:mm:ss"]; 
NSDate *dateToSave = [[NSDate alloc] init]; 
dateToSave = [dateFormatterToSaveDate dateFromString:dateString]; 
+0

什麼是字符串日期格式? –

+0

在美國使用這個@「dd-MM-yyyy HH:mm:ss」 –

+0

格式將是「MM-dd-yyyy HH:mm:ss」 –

回答

0

試試這個代碼: 的NSString的NSDate

NSString *dateString = @"01-02-2010 05:30:00"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm:ss"]; 
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 
NSDate *dateFromString = [[NSDate alloc] init]; 

dateFromString = [dateFormatter dateFromString:dateString]; 
+0

我還需要插入時間。像這樣@「29-05-2015 08:00:00」並使用這個格式化工具@「dd-MM-yyyy HH:mm:ss」 –

+0

@MayankBarnwal然後只需使用@「dd-MM-yyyy HH:mm:ss 「而不是@」dd-MM-yyyy「。 – Schemetrical

0

我認爲這是一個語言環境的問題,這有點相同NSDateFormatter字符串iOS中的7,正好相反。

嘗試將區域設置爲en_US或currentLocale

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
or 

NSLocale *locale = [NSLocale currentLocale]; 
0

其中要轉換的日期字符串是從哪裏來的?用戶輸入? D b?一些其他的web服務?

要麼字符串是固定格式(即它來自數據庫/網絡服務),在這種情況下,您需要將其轉換爲固定格式,或者字符串是用戶輸入,因此將在用戶所在的語言環境中因此您需要將其與用戶區域設置進行轉換。

+0

請將代碼放入您的問題中,而不是發表評論 –

0

這可能是因爲設備的時間格式&您的日期時間格式之間的差異。嘗試設置正確的時區&區域設置。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
NSTimeZone *timeZone = [NSTimeZone localTimeZone]; 
[formatter setTimeZone:timeZone]; 
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 
[formatter setLocale:locale]; 

docs

如果你有固定格式的日期的工作,你應該首先設置 語言環境的日期格式,以適當的東西,爲您的固定 格式。在大多數情況下,要選擇的最佳語言環境是en_US_POSIX,這是一個 語言環境,專門設計用於產生美式英語結果 ,無論用戶和系統首選項如何。 en_US_POSIX也是 時間不變(如果美國在將來的某個時間點更改日期格式的 方式,en_US將更改爲反映新行爲 但en_US_POSIX不會)以及平臺之間(en_US_POSIX的作品爲 iPhone OS上的操作系統與OS X上的操作系統一樣,並且在其他 平臺上也是如此)。

將en_US_POSIX設置爲日期格式化程序的區域設置後,您可以設置日期格式字符串,並且日期格式化程序將爲所有用戶始終如一地運行 。