【发布时间】:2011-11-07 05:41:09
【问题描述】:
我有一个应用程序,我在其中制作了一个闹钟。在我的应用程序中,问题是当设备日期和时间设置发生变化时,警报标签的文本也发生了变化。例如,如果时间设置设置为 24 小时,则在我的标签文本中最后不显示上午和下午,而当更改设置为 12 小时时,则在标签的文本中显示上午和下午。如何检测日期和时间的设置是什么,以及如何对标签的文本应用验证,无论设置始终以上午和下午模式显示还是以 12 小时设置显示?
提前致谢...
【问题讨论】:
我有一个应用程序,我在其中制作了一个闹钟。在我的应用程序中,问题是当设备日期和时间设置发生变化时,警报标签的文本也发生了变化。例如,如果时间设置设置为 24 小时,则在我的标签文本中最后不显示上午和下午,而当更改设置为 12 小时时,则在标签的文本中显示上午和下午。如何检测日期和时间的设置是什么,以及如何对标签的文本应用验证,无论设置始终以上午和下午模式显示还是以 12 小时设置显示?
提前致谢...
【问题讨论】:
Use can use this code:
NSDate *today = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// display in 12HR/24HR (i.e. 11:25PM or 23:25) format according to User Settings
[dateFormatter setDateFormat:@"HH:mm"];
NSString *currentTime = [dateFormatter stringFromDate:today];
NSLog(@"%@",currentTime);
[dateFormatter release];
Hear currentTime contains always 24 hour time format.
int hour = [[[currentTime componentsSeparatedByString:@":"] objectAtIndex:0] intValue];
if(hour > 12){
//show PM
}else{
//Show AM
}
【讨论】:
只需放置此代码
[dateFormatter setDateFormat:@"hh:mm a"];
而不是这个
[dateFormatter setDateFormat:@"HH:mm"];
然后
NSString *currentTime = [dateFormatter stringFromDate:today];
NSLog(@"%@",currentTime);
NSLog 将分别以 AM 或 PM 打印当前时间 12 小时格式
【讨论】: