NSDateFormatter return incorrect date from string

前端 未结 3 451
陌清茗
陌清茗 2020-11-30 13:14

I have a method,

+ (NSDate *) convertToDateFrom:(NSString *) dateString
{
    if (dateString == nil || [dateString isEqual:@\"\"]) return nil; //return nil i         


        
相关标签:
3条回答
  • 2020-11-30 13:31

    Try setting the time zone and locale.

    [df setLocale:[NSLocale currentLocale]];
    [df setTimeZone:[NSTimeZone systemTimeZone]];
    
    0 讨论(0)
  • 2020-11-30 13:43

    The +0000 at the end of the date indicates GMT. All dates are stored relative to GMT; when you convert a date to a string or vice versa using a date formatter, the offset to your time zone is included. You can use NSDateFormatter's -setTimeZone: method to set the time zone used.

    In short, you're not doing anything wrong in your code. Use [df stringFromDate:date]; to see that the date is correct. (You can also use NSDate's -descriptionWithCalendarFormat:timeZone:locale:.)

    0 讨论(0)
  • 2020-11-30 13:47

    try using

    df stringFromDate:date
    

    Following worked on mine,

    NSLog(@"Date for locale %@: %@",
          [[dateFormatter locale] localeIdentifier], [df stringFromDate:date]);
    

    gave me output as :

    Date for locale en_US: Wednesday, 26 June 2013 15:50
    
    0 讨论(0)
提交回复
热议问题