2015-11-24 2 views
-1

я использовать код же это лучший ответПреобразовать NSString к NSDate не работает

Converting NSString to NSDate (and back again)

NSString *dateString = @"01-02-2010"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
// this is imporant - we set our input date format to match our input string 
// if format doesn't match you'll get nil from your string, so be careful 
[dateFormatter setDateFormat:@"dd-MM-yyyy"]; 
NSDate *dateFromString = [[NSDate alloc] init]; 
// voila! 
dateFromString = [dateFormatter dateFromString:dateString]; 

но dateFromString результат 2010-01-31 17:00:00 +0000 почему это не то же самое день.
Я не могу сравнить дату.

ответ

0

Его из-за текущий часовой пояс, добавьте это, то он будет дать и правильной дату

[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 
0

Добавьте следующую строку сразу после того, где вы установили формат дату. Это потому, что он будет конвертировать по умолчанию с локальным часовым поясом устройства. Меня устраивает!

[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 
0

На самом деле на тот же день. Но форматор даты по умолчанию анализирует строку даты в локальном часовом поясе устройства, если часовой пояс не передан. В вашем случае ваша дата была указана как Midnight 2 февраля 2010 UTC + 7, которая 31 января 2010 года 17: 00 UTC.

Если строка даты всегда в UTC, передают UTC часового пояса в дате форматер, как это:

NSString *dateString = @"01-02-2010"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]]; 
// this is imporant - we set our input date format to match our input string 
// if format doesn't match you'll get nil from your string, so be careful 
[dateFormatter setDateFormat:@"dd-MM-yyyy"]; 
NSDate *dateFromString = [[NSDate alloc] init]; 
// voila! 
dateFromString = [dateFormatter dateFromString:dateString]; 
Смежные вопросы