私のアプリでは、以下の手順に従って最終的な文字列を取得したいと考えています。私のメッセージ形式は以下のとおりです
message <br/><br/> On {date_time_stamp} sender_name wrote <br/><br/>
私のメッセージ文字列が以下のようになっているとしましょう
Hello developers <br/><br/> On {2013-02-28 05:00:33} Bob wrote <br/><br/>
Hello World <br/><br/> On {2013-02-27 08:35:33} Jack wrote <br/><br/>
Hello Apple <br/><br/> On {2013-02-26 04:10:44} Tom wrote <br/><br/>
今、私は以下の手順に従う必要があります
メッセージ内のすべての日付を 1 つずつ取得する
GMT タイム ゾーンからローカル タイム ゾーンに変換する
メッセージの GMT 日付を現地の日時に置き換えます
最後に、「breakline with \n」を置き換え、中かっこをメッセージから削除します。
私は以下のコードを持っています
-(void)parseMessageBody:(NSString*)msg
{
NSRange openBracket = [msg rangeOfString:@"{"];
NSRange closeBracket = [msg rangeOfString:@"}"];
NSRange numberRange = NSMakeRange(openBracket.location + 1, closeBracket.location - openBracket.location - 1);
NSString *numberString = [msg substringWithRange:numberRange];
NSLog(@"Parsed string: %@",numberString);
}
-(NSString*)formattedMessageFromString:(NSString*)msg
{
NSString *formattedMessage = @"";
formattedMessage = [msg stringByReplacingOccurrencesOfString:@"<br/>" withString:@"\n"];
return formattedMessage;
}
-(NSString*)getLocalDateFromUTCDateString:(NSString*)utcDateString
{
NSDateFormatter *serverDateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *sourceTimeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[serverDateFormatter setTimeZone:sourceTimeZone];
[serverDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *dateFromServer = [serverDateFormatter dateFromString:utcDateString];
DLog(@"UTC date From SERVER: %@",dateFromServer);
NSDateFormatter *localDateFormatter = [[NSDateFormatter alloc] init];
[localDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSTimeZone* localTimeZone = [NSTimeZone systemTimeZone];
[localDateFormatter setTimeZone:localTimeZone];
NSString *localDate = [localDateFormatter stringFromDate:dateFromServer];
DLog(@"Converted Local DAte : %@",localDate);
return localDate;
}
手順 1 と 3 を実行して、メッセージ内のすべての日付を取得し、それを現地の日時に置き換えることができません。また、メッセージは時間の経過とともに大きくなる可能性があります。したがって、解析は高速である必要があります。メッセージ内のすべての日付を取得して、変換された日付に置き換える方法を教えてもらえますか?
どんな種類の助けも大歓迎です。前もって感謝します。