在iOS

时间:2016-05-04 10:05:41

标签: ios objective-c iphone sqlite

我正在为我的iOS应用 sqlite存储数据列表。在数据库中,一行“addedOn”以格式'30 -Jul-2014 07:43:20'存储来自服务器响应的日期。 在这里,我在'addedOn'列上尝试了很多东西但是无法在ASC / DESC顺序中获取日期。 其他一些细节是

  1. 列'addedOn'日期类型为DATETIME。
  2. 在DESC中尝试获取的查询是:
  3. "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".

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

    1. 我尝试将自己的日期换成另一种格式,同时在自己的数据库中插入,但是以'yyyy-MM-dd HH:mm:ss'等其他日期格式转换此日期格式根本不起作用。 对于尝试过的代码:

      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);
      
    2. 所以我的问题是,这可以转换为任何其他格式的此类型格式,或者是否有任何我缺少的东西。请分享您的想法并建议我需要做的更改。任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:1)

您的dataFormat似乎有误。请尝试以下DateFormat。

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

NSDate *date = [dateFormatter dateFromString:yourDateString];

这将为您提供确切的日期。

希望有所帮助......

答案 1 :(得分:1)

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

尝试NSPredict并使用上面的代码

答案 2 :(得分: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"

答案 3 :(得分:1)

感谢大家的时间,并向我建议我需要做的改变。 在NS中存储NSDate而不是在NSString中转换NSDate然后在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];

并且

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”格式。在此日期列的排序工作正常。