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



我正在为我的iOS应用程序sqlite中存储数据列表。在DB中,一列"addedOn"存储了服务器响应的日期,格式为"2014年7月30日07:43:20"在这里,我在"addedOn"列上尝试了很多东西,但无法按ASC/DESC顺序获取日期。其他一些细节是

  1. "addedOn"列的日期类型为DATETIME
  2. 尝试在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".

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

  1. 当我自己插入数据库时,我试图将此日期转换为另一种格式,但将此日期格式转换为其他日期格式(如'yyyy-MM-dd HH:mm:ss')根本不起作用对于下面尝试的代码:

    NSString*dateString=@"2014年7月30日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);
    

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

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

[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-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"

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

有两种情况下,我的代码现在工作

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

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

最新更新