从strftime获取NSString

时间:2013-08-27 22:07:04

标签: ios objective-c sqlite datetime

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

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

非常感谢任何帮助。

1 个答案:

答案 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);