我有一个 SQLite 数据库,其中有一列名为 start_time。当我查询表时,我选择 start_time 的形式,strftime('%H:%M:%S', t1.Time)
我可以使用 FMDB 以一个不错的字符串获取值stringForColumn
。但我需要在代码中进行转换(目标 C)并且无法弄清楚如何。该表显示了 30、51、25 等值,等等...
如何将这些时间值转换为小时和分钟?
任何帮助是极大的赞赏。
我有一个 SQLite 数据库,其中有一列名为 start_time。当我查询表时,我选择 start_time 的形式,strftime('%H:%M:%S', t1.Time)
我可以使用 FMDB 以一个不错的字符串获取值stringForColumn
。但我需要在代码中进行转换(目标 C)并且无法弄清楚如何。该表显示了 30、51、25 等值,等等...
如何将这些时间值转换为小时和分钟?
任何帮助是极大的赞赏。
我猜您将时间存储为整数(请参阅 SQLite “日期和时间数据类型”)。您可以使用日期格式化程序(请参阅“日期格式化程序”)或 unix 函数转换整数。
使用日期格式化程序:
NSDateFormatter *formatter=[[NSDateFormatter alloc] init];
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[formatter setLocale:enUSPOSIXLocale];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
[formatter setDateFormat:@"HH:mm:ss"];
如果重复使用,缓存构造的格式化程序,然后按如下方式使用:
NSTimeInterval seconds = 465;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:seconds];
NSString *dateString = [formatter stringFromDate:date];
NSLog(@"Time is: %@", dateString);
或者使用 unix 函数:
#include <time.h>
#include <xlocale.h>
...
time_t seconds = 465;
struct tm tm_time;
gmtime_r(&seconds, &tm_time);
char buffer[9];
strftime_l(buffer, sizeof(buffer), "%H:%M:%S", &tm_time, NULL);
NSString *dateString = [NSString stringWithCString:buffer
encoding:NSASCIIStringEncoding];
NSLog(@"Time is: %@", dateString);