Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS中执行“按日期排序”查询所需的日期格式_Ios_Objective C_Iphone_Sqlite - Fatal编程技术网

在iOS中执行“按日期排序”查询所需的日期格式

在iOS中执行“按日期排序”查询所需的日期格式,ios,objective-c,iphone,sqlite,Ios,Objective C,Iphone,Sqlite,我正在为我的iOS应用程序在sqlite中存储数据列表。DB中的一列“addedOn”以格式“30-Jul-2014 07:43:20”存储服务器响应的日期。 在这里,我在“addedOn”列上尝试了许多方法,但无法按ASC/DESC顺序获取日期。 其他一些细节如下 列“addedOn”的日期类型为DATETIME。 尝试获取所用描述的查询有: 按日期时间顺序从tableName中选择*添加描述限制1 &按日期从tableName ORDER addedOn DESC LIMIT 1中选择*并按

我正在为我的iOS应用程序在sqlite中存储数据列表。DB中的一列“addedOn”以格式“30-Jul-2014 07:43:20”存储服务器响应的日期。 在这里,我在“addedOn”列上尝试了许多方法,但无法按ASC/DESC顺序获取日期。 其他一些细节如下

列“addedOn”的日期类型为DATETIME。 尝试获取所用描述的查询有: 按日期时间顺序从tableName中选择*添加描述限制1 &按日期从tableName ORDER addedOn DESC LIMIT 1中选择*并按addedOn DESC LIMIT 1从tableName ORDER中选择*

但所有这些查询都未能给出预期的结果

在插入DB it self时,我尝试将此日期转换为其他格式,但将此日期格式转换为其他日期格式(如“yyy-MM-dd HH:MM:ss”)根本不起作用。对于以下代码:

NSString*dateString=@30-Jul-2014 07:43:20; NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init]; [日期格式化程序setDateFormat:@yyyy-MM-dd HH:MM:ss]; NSDate*dateFromString=[[NSDate alloc]init]; dateFromString=[dateFormatter dateFromString:dateString]

NSString *stringDate = [dateFormatter stringFromDate:dateFromString];
NSLog(@"stringDate %@", stringDate);

所以我的问题是,是否可以将这种类型的格式转换为任何其他格式,或者我是否还缺少其他东西。请分享你的想法,并建议我需要做的改变。感谢您的帮助

您的数据格式似乎有误。尝试以下日期格式

[dateFormatter setDateFormat:@"dd-MMM-yyyy HH:mm:ss"];

NSDate *date = [dateFormatter dateFromString:yourDateString];
这会给你确切的日期

希望能有帮助

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"creationDate" ascending:YES];

尝试NSPredict并使用上述代码

我的数据库带有SQLite,日期格式为dd-mmm-yyy-HH:mm:ss 下面的查询在其中工作

按ADEDON ASC从表名顺序中选择*

ASC | DESC可根据要求使用

如果要转换日期格式,请执行以下操作:

NSString * dateStr = @"30-Jul-2014 07:43:20";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"dd-MMM-yyyy HH:mm:ss"];

NSDate *date = [dateFormat dateFromString:dateStr];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *finalString = [dateFormat stringFromDate:date];

这里的输出是finalString=2014-07-30 07:43:20

感谢各位抽出时间,并建议我需要做的更改。 将NSDate按原样存储在DB中,而不是将NSDate转换为NSString,然后插入DB中,解决了我的问题,代码几乎没有变化

现在有两种情况下我的代码可以正常工作

NSString *dateString = MD_history.addedOn;
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"dd-MMM-yyyy HH:mm:ss"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [df dateFromString:dateString];


在这种情况下,插入数据库后的日期为2014-07-30 02:13:20+0000格式。在这种情况下,日期列的排序是正确的。

Balaji谢谢,但这里的插入工作正常,但在ASC/DESC顺序中提取日期失败,我尝试了上面提到的查询,但这三种查询都没有给我预期的结果。查询中是否有需要更改的内容。我认为在检索时不需要更改任何内容。您只需更改dateFormat字符串。然后尝试将其插入数据库。希望它能起作用。。。
NSString *dateString = MD_history.addedOn;
NSDateFormatter *df = [[NSDateFormatter alloc] init];
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[df setLocale:usLocale];
[df setDateFormat:@"dd-MMM-yyyy HH:mm:ss"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [df dateFromString:dateString];