我创建了一个 sqlite 数据库。'Orders' 是一个包含 idOrder(int)、dateOrder(varchar) 和 discount(float) 的表。在 Bill.h 中,我将 dateBill 设置为 NSDate,那么如何将当前 dateBill 保存到表“订单”中?
user1584341
问问题
864 次
2 回答
2
看起来这个主题也在这里讨论过。在 iPhone 应用程序中将日期持久化到 SQLite3
+ (NSDate *) dateWithSQLiteRepresentation: (NSString *) myString;
{
NSAssert3(myString, @"%s: %d; %s; Invalid argument. myString == nil", __FILE__, __LINE__, __PRETTY_FUNCTION__);
return [[self sqlLiteDateFormatter] dateFromString: myString];
}
+ (NSDate *) dateWithSQLiteRepresentation: (NSString *) myString timeZone: (NSString *) myTimeZone;
{
NSString * dateWithTimezone = nil;
NSDate * result = nil;
NSAssert3(myString, @"%s: %d; %s; Invalid argument. myString == nil", __FILE__, __LINE__, __PRETTY_FUNCTION__);
NSAssert3(myTimeZone, @"%s: %d; %s; Invalid argument. myTimeZone == nil", __FILE__, __LINE__, __PRETTY_FUNCTION__);
dateWithTimezone = [[NSString alloc] initWithFormat: @"%@ %@", myString, myTimeZone];
result = [[self sqlLiteDateFormatterWithTimezone] dateFromString: dateWithTimezone];
[dateWithTimezone release];
return result;
}
+ (NSString *) sqlLiteDateFormat;
{
return @"yyyy-MM-dd HH:mm:ss";
}
+ (NSString *) sqlLiteDateFormatWithTimeZone;
{
static NSString * result = nil;
if (!result) {
result = [[NSString alloc] initWithFormat: @"%@ zzz", [self sqlLiteDateFormat]];
}
return result;
}
+ (NSDateFormatter *) sqlLiteDateFormatter;
{
static NSDateFormatter * _result = nil;
if (!_result) {
_result = [[NSDateFormatter alloc] init];
[_result setDateFormat: [self sqlLiteDateFormat]];
}
return _result;
}
+ (NSDateFormatter *) sqlLiteDateFormatterWithTimezone;
{
static NSDateFormatter * _result = nil;
if (!_result) {
_result = [[NSDateFormatter alloc] init];
[_result setDateFormat: [self sqlLiteDateFormatWithTimeZone]];
}
return _result;
}
- (NSString *) sqlLiteDateRepresentation;
{
NSString * result = nil;
result = [[NSDate sqlLiteDateFormatter] stringFromDate: self];
return result;
}
- (NSTimeInterval) unixTime;
{
NSTimeInterval result = [self timeIntervalSince1970];
return result;
}
#define SECONDS_PER_DAY 86400
#define JULIAN_DAY_OF_ZERO_UNIX_TIME 2440587.5
- (NSTimeInterval) julianDay;
{
return [self unixTime]/SECONDS_PER_DAY + JULIAN_DAY_OF_ZERO_UNIX_TIME;
}
+ (NSDate *) dateWithJulianDay: (NSTimeInterval) myTimeInterval
{
NSDate * result = [[NSDate date] timeIntervalSince1970];
return result;
}
于 2012-08-24T06:28:12.467 回答
0
列的数据类型是 INTEGER
对于保存日期:
sqlite_bind_double(compiledStatement,1, [yourdate TimeIntervalSince1970]);
对于检索日期:
NSDate *gotDate = [NSDate dateWithTimeIntervalSinceNow: sqlite3_column_double(compiledStatement, 1)];
希望能帮助到你
问候
库尔迪普
于 2012-08-24T06:56:35.363 回答