📜 ⬆️ ⬇️

Optimizing SQLite with NSCalendar



In the previous article, we solved the problem of incorrect use of the SQLite week based calendar by writing our own extension for this DBMS.

Our calculation came together, but the speed of its work left much to be desired. Processing a table containing only 2500 records took about 6 seconds. While queries using strftime () were executed in tenths of a second.

')
Before starting, I want to note that here and later, to simplify the presentation, error handling and the allocation of some classes are omitted. Before discussing the code in the comments, do not be lazy to look at the page of the project dodikk / ESLocale.

In the first approximation, our function looked like this:
void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  1. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  2. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  3. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  4. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  5. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  6. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  7. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  8. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  9. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  10. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  11. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  12. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  13. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  14. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  15. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  16. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  17. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  18. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  19. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  20. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  21. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  22. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  23. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  24. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  25. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  26. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  27. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  28. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  29. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  30. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  31. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  32. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  33. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  34. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  35. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  36. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  37. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  38. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  39. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  40. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  41. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  42. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  43. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  44. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  45. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  46. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  47. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  48. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  49. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  50. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  51. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  52. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  53. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
  54. void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .
void ObjcFormatAnsiDateUsingLocale( sqlite3_context* ctx_, int argc_, sqlite3_value** argv_ ) { assert( ctx_ ); // @autoreleasepool // ObjC . { // argc_, argv_ const unsigned char * rawFormat_ = sqlite3_value_text( argv_[0] ); const unsigned char * rawDate_ = sqlite3_value_text( argv_[1] ); const unsigned char * rawLocaleIdentifier_ = sqlite3_value_text( argv_[2] ); // , crash NSString if ( NULL == rawFormat_ || NULL == rawDate_ || NULL == rawLocaleIdentifier_ ) { sqlite3_result_error( ctx_, "ObjcFormatAnsiDate - NULL argument passed" , 3 ); return ; } // NSString NSString* strDate_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawDate_ length: strlen( ( const char *)rawDate_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* format_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawFormat_ length: strlen( ( const char *)rawFormat_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; NSString* localeIdentifier_ = [ [ NSString alloc ] initWithBytesNoCopy: ( void *)rawLocaleIdentifier_ length: strlen( ( const char *)rawLocaleIdentifier_ ) encoding: NSUTF8StringEncoding freeWhenDone: NO ]; // . en_US_POSIX yyyy-MM-dd NSDateFormatter* ansiFormatter_ = [ ESLocaleFactory ansiDateFormatter ]; // . , NSLocale* locale_ = [ [ NSLocale alloc ] initWithLocaleIdentifier: localeIdentifier_ ]; NSDateFormatter* targetFormatter_ = [ ESLocaleFactory gregorianDateFormatterWithLocale: locale_ ]; targetFormatter_.dateFormat = format_; // , NSDate* date_ = [ ansiFormatter_ dateFromString: strDate_ ]; NSString* result_ = [ targetFormatter_ stringFromDate: date_ ]; // if ( nil == result_ || [ result_ isEqualToString: @"" ] ) { sqlite3_result_null( ctx_ ); } else { sqlite3_result_text ( ctx_, ( const char *)[ result_ cStringUsingEncoding : NSUTF8StringEncoding ], ( int )[ result_ lengthOfBytesUsingEncoding: NSUTF8StringEncoding ], SQLITE_TRANSIENT // SQLite - ); } } } * This source code was highlighted with Source Code Highlighter .


Having driven through the profiler, we saw that most of the time it took not the formatting of the text, but the creation of instances of NSDateFormatter (line 39..45).

The model of using this function assumes a change of locale and format only between requests. Within the limits of one request these parameters most likely will not change. This leads us to a simple optimization idea.

We will put the resource-intensive NSDateFormatter in some Singletone object. Then the formatter will look like this:
  1. SqlitePersistentDateFormatter * fmt_ = [SqlitePersistentDateFormatter instance]; // create singletone
  2. NSString * result_ = nil;
  3. @synchronized (fmt_) // formatting must be atomic and thread safe
  4. {
  5. // update the format and locale if necessary
  6. [fmt_ setFormat: format_
  7. locale: localeIdentifier_];
  8. // format the result
  9. result_ = [fmt_ getFormattedDate: strDate_];
  10. }
* This source code was highlighted with Source Code Highlighter .


And now it's time to look under the hood. The implementation of thread-safe singletone is omitted as a classic task. In the rest we get the following:
  1. @implementation SqlitePersistentDateFormatter
  2. {
  3. @ private // our heavy objects
  4. NSDateFormatter * ansiFormatter;
  5. NSDateFormatter * targetFormatter;
  6. }
  7. // ansiFormatter does not change, because it is standard
  8. // therefore create it inside init.
  9. - (id) init
  10. {
  11. self = [super init];
  12. if (nil == self)
  13. {
  14. return nil;
  15. }
  16. self-> ansiFormatter = [ESLocaleFactory ansiDateFormatter];
  17. return self;
  18. }
  19. // the most interesting thing here
  20. - (BOOL) setFormat :( NSString *) dateFormat_
  21. locale :( NSString *) locale_
  22. {
  23. NSParameterAssert (nil! = Locale_);
  24. BOOL isNoFormatter_ = (nil == self-> targetFormatter);
  25. BOOL isOtherLocale_ =! [Self-> targetFormatter.locale.localeIdentifier isEqualToString: locale_];
  26. // create a new NSDateFormatter only if the locale has changed
  27. if (isNoFormatter_ || isOtherLocale_)
  28. {
  29. NSCalendar * cal_ = [ESLocaleFactory gregorianCalendarWithLocaleId: locale_];
  30. self-> targetFormatter = [NSDateFormatter new ];
  31. [ESLocaleFactory setCalendar: cal_
  32. forDateFormatter: self-> targetFormatter];
  33. }
  34. // set the date
  35. self-> targetFormatter.dateFormat = dateFormat_;
  36. return YES;
  37. }
  38. // the main work has already been done.
  39. // It remains only to apply harvested NSDateFormatter
  40. - (NSString *) getFormattedDate :( NSString *) strDate_;
  41. {
  42. NSDate * date_ = [self-> ansiFormatter dateFromString: strDate_];
  43. NSString * result_ = [self-> targetFormatter stringFromDate: date_];
  44. return result_;
  45. }
* This source code was highlighted with Source Code Highlighter .


So, we have a thread-safe, almost pure in terms of the FP function (pure function), which works in a time comparable to strftime.
You can find the full version of the code on github.

Source: https://habr.com/ru/post/144192/


All Articles