使用NSDateFormatter在iPhone应用中工作。我从像"00:00:00", "16:00:00","15:30:00" and so on
这样的网络服务中获取时间。我需要将这些时间转换为
如果时间是"00:00:00" to "12 AM"
,如果时间是"16:00:00" to "4 PM"
,如果时间是“15:30:00”到“3.30 PM”。我已经使用了以下代码,但是当我通过"16:00:00" the date returns null
时。
NSString *dats1 = @"16:00:00";
NSDateFormatter *dateFormatter3 = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter3 setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter3 setDateFormat:@"hh:mm:ss"];
NSDate *date1 = [dateFormatter3 dateFromString:dats1];
NSLog(@"date1 : %@", date1); **// Here returning (null)**
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mm a"];
NSLog(@"Current Date: %@", [formatter stringFromDate:date1]); **// Here also returning (null)**
[formatter release];
当通过“00:00:00”时,它正确地返回“12 AM”。有谁可以帮我解决这个问题?提前谢谢。
答案 0 :(得分:113)
如果您的时间格式位于24hrs
,请使用"HH:mm:ss"
格式。请测试代码并告诉我它是否适合您。我已经过测试,它正在返回"4 PM"
NSString *dats1 = @"16:00:00";
NSDateFormatter *dateFormatter3 = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter3 setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter3 setDateFormat:@"HH:mm:ss"];
NSDate *date1 = [dateFormatter3 dateFromString:dats1];
NSLog(@"date1 : %@", date1); **// Here returning (null)**
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mm a"];
NSLog(@"Current Date: %@", [formatter stringFromDate:date1]); **// Here also returning (null)**
[formatter release];
感谢。
答案 1 :(得分:17)
您可以使用适合当前区域设置的ActiveQuery
:
.ShortStyle
根据当前设备区域设置返回let timeFormatter = NSDateFormatter()
timeFormatter.dateStyle = .NoStyle
timeFormatter.timeStyle = .ShortStyle
timeFormatter.stringFromDate(NSDate())
或17:12
。
答案 2 :(得分:15)
为什么要再次分配NSDateFormatter
?
您只需将其格式化为NSDate
,然后再将其格式化为NSString
,
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"HH:mm:ss"];
NSDate *date = [dateFormatter dateFromString:dats1];
[dateFormatter setDateFormat:@"hh:mm a"];
NSString *formattedDate = [dateFormatter stringFromDate:date];
NSLog(@"%@",formattedDate);
答案 3 :(得分:14)
尝试HH:mm:ss
(注意小时格式的大写字母)
答案 4 :(得分:8)
希望有人愿意在Swift中获得它
对于Swift
tbody{
position:relative;
overflow:hidden;
height:300px;
}
答案 5 :(得分:8)
以下代码始终保持12小时格式:
NSLocale *12hourFomrat = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
df.locale = 12hourFomrat;
这始终保持24小时格式
NSLocale *24hourFormat = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
df.locale = 24hourFormat
答案 6 :(得分:3)
答案 7 :(得分:0)
迅速5:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh mm a"
let formattedDate = dateFormatter.string(from: Date())