• FMDB读取Datetime类型值为1970的问题


    1.问题

          今天使用FMDB做一个例子程序,新建的一张表有一个datetime字段,数据库有默认值,大概如下

    CREATE  TABLE [ConsumptionType] ([id] INTEGER PRIMARY KEY  NOT NULL ,[name] TEXT,[level] TEXT,[creatdate] DATETIME default (datetime('now', 'localtime')))
    

     当我每次去读取creatdate的时候获取到得值的是1970的时间,以前一直用字符串存时间戳,没发现这个问题

    ,删掉表做了几次还是不行。

        temp.creatdate=[rs dateForColumn:@"creatdate"];//1970 这种方式读取到的时间一直不对
    

     ,后来我把它读取成字符串,

         temp.creatdate=[rs stringForColumn:@"creatdate"];//这样是读取出来了正确的时间
    

    这就说明数据库存取是正确的,只是再读取的时候出了问题,点进源码去看发现

    FMDatabase类有一个NSDateFormatter属性,但它为空的时候,会采用默认的解析时间类型

    所以想正确处理datetime 类型的数据时就需要传一个NSDateFormatter给db,这样就可以获取到

    正确的值。

    2.正确的代码样例

    /**
     *  获取所有的消费分类
     *
     *  @return 以数组形式返回所有的消费分类
     */
    + (NSArray*)getAllConsumptionType{
        __block NSMutableArray * arr=[[NSMutableArray alloc] init];
        __block  FMResultSet *rs=nil;
        
        [[DBHelper sharedFMDBManager] inDatabase:^(FMDatabase *db) {
            NSString * sql=[NSString stringWithFormat:@"select * from ConsumptionType"];
            NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
            [outputFormatter setLocale:[NSLocale currentLocale]];
            [outputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
            [db setDateFormat:outputFormatter];
            
            rs=[db executeQuery:sql];
            
            while ([rs next]) {
                ConsumptionType * temp=[[ConsumptionType alloc] init];
                temp.id=[rs intForColumn:@"id"];
                temp.name=[rs stringForColumn:@"name"];
                temp.level=[rs intForColumn:@"level"];
                temp.creatdate=[rs dateForColumn:@"creatdate"];
                [arr addObject:temp];
            }
            
        }];
        return arr;
    }
    
  • 相关阅读:
    andrax不为人知的秘密
    SecuritySRT console已经建立链接为什么还没有反应?
    必备软硬件
    关于mt的个人看法及优缺点
    hash是什么
    usb接口的缺点
    古董交换机欣赏
    博客圆低调的文章审核机制
    手机技术控不能买哪些手机,应该买什么手机
    两个以上vlan三台以上交换机配置好,网络不通,引发的思考
  • 原文地址:https://www.cnblogs.com/try-wyh/p/4705188.html
Copyright © 2020-2023  润新知