0

Here I'm getting a date in string format when I try to convert that string into a date it's getting null. How to get date from below function directly.

-(NSString *)getLocalDateTimeFromUTC:(NSString *)strDate
    {
    // create dateFormatter with UTC time format
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ"]; //@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ"
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
    NSDate *date = [dateFormatter dateFromString:strDate]; // create date from string

    // change to a readable time format and change to local time zone
    [dateFormatter setDateFormat:@"dd-MM-yyyy"];
    [dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
    NSString *timestamp = [dateFormatter stringFromDate:date];
    [dateFormatter setDateFormat:@"dd-MM-yyyy"];
    NSDate *date2 = [dateFormatter dateFromString:timestamp];
    NSLog(@"%@", date2); //Mon Dec  2 00:00:00 2019. wrong formate
    return [dateFormatter stringFromDate:date];
}
pkamb
  • 33,281
  • 23
  • 160
  • 191
Naresh
  • 16,698
  • 6
  • 112
  • 113

1 Answers1

0

The conversion back to date is irrelevant. Remove the lines.

And set the locale always to a fixed value (en_US_POSIX)

-(NSString *)getLocalDateTimeFromUTC:(NSString *)strDate
    {
    // create dateFormatter with UTC time format
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
    dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSZ"; //@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ"
    dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
    NSDate *date = [dateFormatter dateFromString:strDate]; // create date from string

    // change to a readable time format and change to local time zone
    dateFormatter.dateFormat = @"dd-MM-yyyy";
    dateFormatter.timeZone = [NSTimeZone localTimeZone];
    NSString *timestamp = [dateFormatter stringFromDate:date];
    NSLog(@"%@", timestamp); 
    return timestamp;
}
vadian
  • 274,689
  • 30
  • 353
  • 361