2

我想使用 strftime 将 NSDate 转换为字符串,但%e在一位数日期之前有一个空格。我该如何防止这种情况?或者,如果我不能,如果它是一个空格,那么删除位置 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 回答