将NSString结果从SQLite转换为格式化的NSDate

时间:2019-06-11 01:22:34

标签: objective-c nsstring nsdate

我知道这听起来似乎很熟悉,但是出于某种奇怪的原因,大多数关于SO的建议解决方案对我来说都行不通。

我从SQLite查询返回的日期字符串为NSString,格式为:

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 个答案:

答案 0 :(得分:1)

我猜想您想要另一种输出格式,如果是这种情况,那么您可以尝试这样的代码:

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

答案 1 :(得分:1)

使用其他格式化程序格式化日期中的字符串。例如:

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

setDateFormat用于输入日期字符串并获取NSDate。

dateStyle和timeStyle用于格式化NSDates中的dateString。