我有一个名为start_time的SQLite数据库。当我查询表时,我选择strftime('%H:%M:%S', t1.Time)
形式的start_time,我可以使用FMDB stringForColumn
在一个漂亮的字符串中获取值。但我需要在代码(目标C)中进行转换,并且无法弄清楚如何。该表显示了诸如30,51,25等等的值......
如何将这些时间值转换为小时和分钟?
非常感谢任何帮助。
答案 0 :(得分:2)
我猜您将时间存储为整数(请参阅SQLite "Date and Time Datatype")。您可以使用日期格式化程序(请参阅"Date Formatters")或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);