首页 文章

在iOS中工作'order by date'查询所需的日期格式

提问于
浏览
2

我在 sqlite for my iOS app 中存储数据列表 . 在DB中,一列'addedOn'存储了 server response in format '30-Jul-2014 07:43:20'. 的日期 . 这里我在'addedOn'列上尝试了很多东西但是无法在ASC / DESC顺序中获取日期 . 其他一些细节是

  • 列'addedOn'日期类型为DATETIME .

  • 尝试在DESC中获取的查询使用的是:

"SELECT * FROM tableName ORDER BY datetime(addedOn) DESC LIMIT 1" & "SELECT * FROM tableName ORDER BY date(addedOn) DESC LIMIT 1" & "SELECT * FROM tableName ORDER BY addedOn DESC LIMIT 1".

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

  • 我试图以另一种格式转换此日期,同时在数据库中插入它自己,但转换此日期格式的其他日期格式如 'yyyy-MM-dd HH:mm:ss' 根本不起作用 . For that tried below code:

NSString * dateString = @“30-Jul-2014 07:43:20”; NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@“yyyy-MM-dd HH:mm:ss”]; NSDate * dateFromString = [[NSDate alloc] init]; dateFromString = [dateFormatter dateFromString:dateString];

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

所以我的问题是,这可能是以任何其他格式转换这种类型的格式,或者是否有任何我缺少的东西 . 请分享您的想法并建议我需要做的更改 . 任何帮助表示赞赏 .

4 回答

  • 1

    感谢大家的时间,并建议我需要做的改变 . Storing of NSDate as it is in DB instead of Converting NSDate in NSString and then inserting in DB solved my problem with little change in code

    我的代码现在有两种情况

    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];
    

    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];
    

    在这种情况下,插入DB后的日期为“2014-07-30 02:13:20 0000”格式 . 在此日期列的排序工作正常 .

  • 1

    您的dataFormat似乎是错误的 . 尝试以下DateFormat .

    [dateFormatter setDateFormat:@"dd-MMM-yyyy HH:mm:ss"];
    
    NSDate *date = [dateFormatter dateFromString:yourDateString];
    

    这将给你确切的日期 .

    希望能帮助到你..

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

    尝试NSPredict并使用上面的代码

  • 1

    我的数据库使用SQLite并且格式为“dd-mmm-yyyy HH:mm:ss”,其中以下查询有效 .

    SELECT * FROM TableName ORDER BY addedOn 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”

相关问题