将时间从24小时时间样式转换为12小时时间样式时出现问题。 当您看到日本时间表示的iOS标准时,显示12小时时间显示0到11 但是在使用iOS内置方法进行转换时,转换00:00时午后12:00或午前12点。 当您看到设置12小时时间样式和区域日语的闹钟应用程序时,您将看到时间显示0到11.但是当您使用iOS的内置方法时,它会给出不同的结果。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [DateUtility createLocale];
locale=[[NSLocale alloc]initWithLocaleIdentifier:@"ja_JPPOSIX"];
[dateFormatter setLocale:locale];
dateFormatter.dateFormat = @"hh:mm";
NSDate *date = [dateFormatter dateFromString:time];
dateFormatter.dateFormat = @"a";
NSLog(@"Meridian=%@",[dateFormatter stringFromDate:date]);
dateFormatter.dateFormat = @"hh";
NSLog(@"Hour=%@",[dateFormatter stringFromDate:date]);
答案 0 :(得分:1)
如果您正在寻找将日期格式转换为非常具体风格的方法,我建议使用NSDateFormatter
类。
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormate: @"yyyy-MM-dd HH:mm:ss"]; //This is just an example format, from one of my projects. It looks like this: "2014-05-07 18:32:25"
NSString* dateString = [dateFormatter stringFromDate: [NSDate date]];
dateString
现在应该有一个字符串,其中包含您选择的格式的当前时间。
有关您可以使用的所有格式的完整列表,请查看this链接。希望这会有所帮助。
答案 1 :(得分:1)
使用日期格式“KK”获取小时范围0到11。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [DateUtility createLocale];
locale=[[NSLocale alloc]initWithLocaleIdentifier:@"ja_JPPOSIX"];
[dateFormatter setLocale:locale];
dateFormatter.dateFormat = @"KK:mm";
NSDate *date = [dateFormatter dateFromString:time];
dateFormatter.dateFormat = @"a";
NSLog(@"Meridian=%@",[dateFormatter stringFromDate:date]);
dateFormatter.dateFormat = @"KK";
NSLog(@"Hour=%@",[dateFormatter stringFromDate:date]);