NSCalendarを使用したSQLiteの最適化



前の記事では、このDBMSの拡張機能を記述することで、SQLite週ベースのカレンダーを誤って使用する問題を解決しました。

計算は収束しましたが、作業の速度には多くの要望がありました。 2500レコードのみを含むテーブルの処理には約6秒かかりました。 strftime()を使用したクエリは10分の1秒で実行されました。


開始する前に、以下では、プレゼンテーションを簡素化するために、エラー処理と一部のクラスの強調表示が省略されていることに注意してください。 コメントでコードを議論する前に、dodikk / ESLocaleプロジェクトのページを見るのを怠laにしないでください。

最初の近似では、関数は次のようになりました。
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 .


プロファイラーを実行すると、ほとんどの場合、テキストの書式設定ではなく、NSDateFormatterのインスタンスの作成(39..45行目)が必要であることがわかりました。

この関数を使用するモデルには、リクエスト間でのみロケールとフォーマットを変更することが含まれます。 1つのリクエスト内で、これらのパラメーターはほとんど変更されません。 これは、単純な最適化のアイデアにつながります。

リソースを消費するNSDateFormatterをシングルトーンオブジェクトに配置します。 次に、フォーマット単位は次のようになります。
  1. SqlitePersistentDateFormatter * fmt_ = [SqlitePersistentDateFormatterインスタンス]; //シングルトーンを作成します
  2. NSString * result_ = nil;
  3. @synchronized(fmt_) //フォーマットはアトミックでスレッドセーフでなければなりません
  4. {
  5. //必要に応じて形式とロケールを更新します
  6. [fmt_ setFormat:format_
  7. ロケール:localeIdentifier_];
  8. //結果をフォーマットします
  9. result_ = [fmt_ getFormattedDate:strDate_];
  10. }
*このソースコードは、 ソースコードハイライターで強調表示されました。


そして、今度は内部を調べる時間です。 古典的な問題として、スレッドセーフなシングルトーンの実装を省略します。 残りの部分では、次のものが得られます。
  1. @implementation SqlitePersistentDateFormatter
  2. {
  3. @ private //重いオブジェクト
  4. NSDateFormatter * ansiFormatter;
  5. NSDateFormatter * targetFormatter;
  6. }
  7. // ansiFormatterは標準であるため変更されません
  8. //したがって、init内で作成します。
  9. -(id)init
  10. {
  11. self = [super init];
  12. if (nil == self)
  13. {
  14. nilを返します。
  15. }
  16. self-> ansiFormatter = [ESLocaleFactory ansiDateFormatter];
  17. 自己を返す ;
  18. }
  19. //ここで最も興味深い
  20. -(BOOL)setFormat :( NSString *)dateFormat_
  21. ロケール:( NSString *)locale_
  22. {
  23. NSParameterAssert(nil!= Locale_);
  24. BOOL isNoFormatter_ =(nil == self-> targetFormatter);
  25. BOOL isOtherLocale_ =![Self-> targetFormatter.locale.localeIdentifier isEqualToString:locale_];
  26. //ロケールが変更された場合にのみ新しいNSDateFormatterを作成します
  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. //日付を設定します
  35. self-> targetFormatter.dateFormat = dateFormat_;
  36. YESを返します。
  37. }
  38. //主な作業はすでに完了しています。
  39. //準備された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. }
*このソースコードは、 ソースコードハイライターで強調表示されました。


そのため、strftimeに匹敵する時間で機能する、FP関数(純粋関数)の点でほぼ純粋なスレッドセーフを取得しました。
githubでコードの完全版を見つけることができます

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


All Articles