1

我有一个 SQLite 数据库,其中有一列名为 start_time。当我查询表时,我选择 start_time 的形式,strftime('%H:%M:%S', t1.Time)我可以使用 FMDB 以一个不错的字符串获取值stringForColumn。但我需要在代码中进行转换(目标 C)并且无法弄清楚如何。该表显示了 30、51、25 等值,等等...

如何将这些时间值转换为小时和分钟?

任何帮助是极大的赞赏。

4

1 回答 1

2

我猜您将时间存储为整数(请参阅 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);
于 2013-08-27T23:34:40.527 回答