2013-04-25 3 views
0

Я конвертирую две строки даты и времени в NSDate, но я всегда получаю неправильное время, но получаю правильную дату, я не знаю, почему xcode дает неправильное сообщение в журнале, у меня есть много NSDate кода, но все не работают, это один работает, когда я изменил формат даты, скажите мне, что делать для формата времениПреобразование NSString в NSDate

 NSDate * date; 
    //Assume dateString is populated and of format NSString * dateString [email protected]"2011-11-21 11:20"; 
    NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; 
    NSString *dateString =[NSString stringWithFormat:@"%@ %@", socialEvent.SocialEventsDC_EventDate,socialEvent.SocialEventsDC_EventStartTime]; 
    NSLog(@"%@ %@",socialEvent.SocialEventsDC_EventDate,socialEvent.SocialEventsDC_EventStartTime); 

    [dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm a"]; 
    if (dateString != nil) { 
     date = [dateFormatter dateFromString:dateString]; 
//  [date release]; 
    } 

    NSLog(@"%@",date); 

мой журнал сообщение

2013-04-25 10:45:04.417 BNI UK & Ire[450:5203] 01/20/2015 11:00 PM 
2013-04-25 10:45:09.679 BNI UK & Ire[450:5203] 2015-01-20 07:00:00 +0000 

мое время всегда 7:00:00 хотя мое время 11:00, пожалуйста, помогите мне

+1

Вы живете на 4 часа меньше по Гринвичу. Я думаю, около WestIndies, гуая и т. Д. Http://timezoneguide.com/time-gmt-4.html –

+0

, так что я должен делать? – NullData

+0

Если это так, ваше время верно, и это показано таким образом. вам нужно преобразовать его в строку. –

ответ

1

попробовать этот код ...

NSString * dateString [email protected]"2011-11-21 11:20"; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"yyyy-MM-dd hh:mm"]; 
    // [formatter setTimeZone:[NSTimeZone localTimeZone]]; 

    NSDate *datTemp = [formatter dateFromString:dateString]; 
    NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
    NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone]; 

    NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:datTemp]; 
    NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:datTemp]; 
    NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset; 
    NSDate* destinationDate = [[[NSDate alloc] initWithTimeInterval:interval sinceDate:datTemp] autorelease]; 
    NSLog(@"\n\n\n Destination date is:- %@",destinationDate); 
+0

это дает мне это сообщение журнала Назначение Дата: 2013-04-20 00:40:00 +0000 2013-04-29 11: 50: 22.617 BNI UK & Ire [843: 1303] Дата назначения: 2015-01-20 12:00 : 00 +0000 – NullData

+0

my ti мне 8:40, и назначение дает мне 00:40:00 – NullData

+0

Я спрашиваю, это правильно? – NullData

1

попробовать, как это,

NSDate *mydate = [NSDate date]; 
NSTimeInterval secondsInEightHours = 4 * 60 * 60; 
NSDate *dateEightHoursAhead = [mydate dateByAddingTimeInterval:secondsInEightHours]; 
+0

, где еще вы пошли неправильно, иначе он даст правильный результат. – Balu

1

Если DateString будет, как указано ниже, это должно работать, часовой пояс предполагается быть вашим локальным временем. И журнал дата будет в формате UTC

NSString *dateString = @"2011-11-21 11:20"; 

NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; 

NSDate * date = [dateFormatter dateFromString:dateString]; 
NSLog(@"%@",date); 
1

Пожалуйста, попробуйте этот код ...

NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init]; 

    [dateFormatter1 setDateFormat:@"MM/dd/yyyy hh:mm a"]; 
    [dateFormatter1 setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 
    NSDate *myDate = [dateFormatter1 dateFromString:@"01/20/2015 11:00 pm"]; 
    NSLog(@"mydate is :%@",myDate); 
    NSLog(@"DATE IS : %@",[dateFormatter1 stringFromDate:myDate]); 

Примечание: TIMEZONE зависит от вашего местного часового пояса.

 Смежные вопросы

  • Нет связанных вопросов^_^