Преобразование результата NSString из SQLite в отформатированный NSDate - PullRequest
0 голосов
/ 11 июня 2019

Я знаю, что это звучит постоянно знакомо, но большинство из предложенных решений для SO не работают для меня по какой-то странной причине.

У меня есть строка даты, возвращенная из запроса SQLite в виде строки NSS в этом формате:

2019-06-10 13:45:33

Однако, когда применяется любое из предложенных решений для форматирования даты, с локализацией часового пояса или без нее , я получаю такой результат:

Mon Jun 10 13:45:33 2019

Это одна из подпрограмм, которые я пробовал, среди многих других:

NSString * dateString = @"2019-06-10 13:45:33";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//[dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
//[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:dateString];

// dateFromString > Mon Jun 10 13:45:33 2019

Могу ли я сделать что-то не так или есть какой-то пропущенный шаг в преобразовании?

TIA.

Ответы [ 2 ]

1 голос
/ 11 июня 2019

Используйте другой форматер для форматирования строки из даты.Например:

NSDateFormatter * formatter=[[NSDateFormatter]alloc]init];
formatter.dateStyle = NSDateFormatterMediumStyle;
formatter.timeStyle = NSDateFormatterNoStyle;
NSString * formattedDateString = [formatter stringFromDate:date];

setDateFormat для ввода строк даты и получения NSDates.

dateStyle и timeStyle для форматирования строк даты из NSDates.

1 голос
/ 11 июня 2019

Я мог бы догадаться, что вам нужен другой формат вывода, если это так, то вы можете попробовать код, подобный этому:

NSString * dateString = @"2019-06-10 13:45:33";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//[dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
//[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:dateString];

NSDateFormatter *printDateFormatter = [[NSDateFormatter alloc] init];
printDateFormatter.dateStyle = NSDateIntervalFormatterMediumStyle;
printDateFormatter.timeStyle = NSDateIntervalFormatterMediumStyle;

NSLog(@"%@", [printDateFormatter stringFromDate:dateFromString]);

Результат будет:

10 Jun 2019 at 13:45:33
...