Objective-C and sqlite's DATETIME type

前端 未结 4 1293
逝去的感伤
逝去的感伤 2020-12-01 06:14

I have a sqlite3 table that I\'m trying to map to an object in objective-C. One attribute of the table is \'completed_at\' which is stored as a DATETIME.

I want to c

4条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-01 06:14

    I am sharing here just the core things regarding date formatting for saving and retrieving the data for presentation. If you have any problem with this code snippet then I will share the full code that I used for my project.

    When you save your data, bind your date value in the sql statement like this way:

        NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
        [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        NSString *dateString=[dateFormat stringFromDate:[NSDate date]];
    
        sqlite3_bind_text(saveStmt, 1, [dateString UTF8String] , -1, SQLITE_TRANSIENT);
    

    and when you retrieve data you have to write this code:

        NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
        [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        NSDate *myDate =[dateFormat dateFromString:[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)]];
    

    now you have a variable myDate of NSDate type which you can render in your way:

        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"dd-MM-yyyy hh:mm:ss a"];
        NSLog(@"My Date was : %@", [formatter stringFromDate:myDate]);
    

    You must have to remember three things:

    1. In your SQLite date field type should be DATETIME
    2. Date format should be same when you store and when you retrieve
    3. Now you can show in your own way but following the format. Below the format details is given.

    Format:

       'dd' = Day 01-31
       'MM' = Month 01-12
       'yyyy' = Year 2000
       'HH' = Hour in 24 hour
       'hh' = Hour in 12 hour
       'mm' = Minute 00-59
       'ss' = Second 00-59
       'a' = AM / PM
    

提交回复
热议问题