2

NSDate を strftimeで文字列に変換したいのです%eが、1 桁の日の前に空白があります。これを防ぐにはどうすればよいですか?または、それがスペースの場合、4 番目の文字を削除する最善の方法は何ですか?

// TODO: Don't precede %e with blank for single-digit days. @issue
char buffer[22]; // Sep 22, 2012 12:15 PM -- 21 chars + 1 for NUL terminator \0
time_t time = [message.sentDate timeIntervalSince1970] - [[NSTimeZone localTimeZone] secondsFromGMT];
strftime(buffer, 22, "%b %e, %Y %l:%M %p", localtime(&time));
messageSentDateLabel.text = [NSString stringWithCString:buffer encoding:NSUTF8StringEncoding];
4

2 に答える 2

4

GNU C拡張機能を試して、次の形式でマイナス記号を挿入することにより、数値のスペースパディングをスキップすることができます%-e。これらはAppleのライブラリでサポートされています。

于 2012-09-03T23:26:29.453 に答える
0

おそらく最も効率の悪い解決策は、最後の行を次のように置き換えることです。

NSMutableString *sentDateLabelText = [NSMutableString stringWithCString:buffer encoding:NSUTF8StringEncoding];
if ([sentDateLabelText characterAtIndex:4] == ' ') {
    [sentDateLabelText deleteCharactersInRange:NSMakeRange(4, 1)];
}
messageSentDateLabel.text = sentDateLabelText;
于 2012-09-03T23:10:24.550 に答える