我正在使用多个NSDateComponents
来显示一个时钟,其各个值在整个屏幕中被分解,但我遇到格式化问题。
秒显示1-60不是00-59,小时是24小时格式而不是12.有没有办法以不同方式格式化这些?
现在我已经将值作为NSInteger传递,将它们转移到NSString并将字符串应用到UILabel。有人可以帮忙吗?
我应该使用@"%"
格式吗? (现在我正在使用@"d"
)如果是这样,我在哪里可以找到这些不同类型的列表?
答案 0 :(得分:2)
由于您已将值设为NSInteger
,因此假设它们首先被称为minutes
和hours
:
minutes -= 1; // convert 1 -> 60 to 0 -> 59
if(hours > 12) hours -= 12; // convert 13 -> 24 to 1 -> 12
现在格式化它们都使用"%02d"
- 分解为0 - 零填充,2 - 字段宽度,d - 十进制整数。
您可以在printf
答案 1 :(得分:0)
您可以使用NSDateFormatter将日期和时间格式化为NSStrings。
NSDate *date = [dateFormatter dateFromString:@"01.02.1989"];
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
// Convert my date object into yyyy-mm-dd string object
[dateFormatter1 setDateFormat:@"yyyy-MM-dd"];
NSString *formattedStringDate = [dateFormatter1 stringFromDate:date];
此处有一个日期/时间格式代码列表:Date formatting
我希望这有帮助! Ñ
答案 2 :(得分:0)
我之前遇到过类似的问题,请尝试查看此链接。它列出了所有各种日期格式化程序及其工作方式。 http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns
对于你的特殊问题,我想你想要h:mm:ss a。 h给出小时,mm为分钟,ss为秒(可能s可能是0填充,我不确定),a给出AM / PM格式。 另外,%d是整数的正确格式,我相信%@是其他字符串的正确格式。
希望这有帮助。
答案 3 :(得分:0)
通过NSCalendar将NSDateComponents转换为NSDate,然后使用NSDateFormatter(如果需要,可以每个片段使用一个日期格式化器):
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *date = [calendar dateFromComponents:yourDateComponents];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterNoStyle];
[formatter setTimeStye:NSDateFormatterLongStyle];
NSString *timeString = [formatter stringFromDate:date];
[formatter release];
请注意,这将使用用户的时间格式;请参阅使用自定义格式的文档。