2016-08-03 94 views
-5

我试图将NSString这样的一个“2300”转换为NSDate格式。 (注意:23后没有冒号)。将NSString(例如:“2300”)转换为NSDate(iOS)

我从外部Web服务获取字符串。我需要以12小时的格式在我的应用中显示这个时间。

谢谢:)

+0

“2300” 的输出可以是任何东西。你是说这是一个24小时格式(hhmm)的时间,你想将它转换为NSDate,然后转换为12小时格式的时间字符串? –

+0

是..“2300”是24小时格式的时间 –

+0

您得到这种类型格式:下午11:00? –

回答

1

我加入这里的三种类型,其中tyope你需要选择

类型-1

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"HHmm"]; 
[formatter setTimeZone:[NSTimeZone systemTimeZone]]; 
[formatter setLocale:[NSLocale systemLocale]]; 
NSDate *date = [formatter dateFromString:@"2300"]; 
    [formatter setDateFormat:@"hh:mm"]; 
NSString *finalDate = [formatter stringFromDate:date]; 
NSLog(@"finalDate==%@",finalDate); 

类型-2

NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init]; 
[formatter1 setDateFormat:@"HHmm"]; 
[formatter1 setTimeZone:[NSTimeZone systemTimeZone]]; 
[formatter1 setLocale:[NSLocale systemLocale]]; 
NSDate *date1 = [formatter1 dateFromString:@"2300"]; 
[formatter1 setDateFormat:@"hhmm"]; 
NSString *finalDate1 = [formatter1 stringFromDate:date1]; 
NSLog(@"finalDate1==%@",finalDate1); 

Typ Ë-3

NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init]; 
[formatter2 setDateFormat:@"HHmm"]; 
[formatter2 setTimeZone:[NSTimeZone systemTimeZone]]; 
[formatter2 setLocale:[NSLocale systemLocale]]; 
NSDate *date2 = [formatter1 dateFromString:@"2300"]; 
[formatter2 setDateFormat:@"hh:mm a"]; 
NSString *finalDate2 = [formatter2 stringFromDate:date2]; 
NSLog(@"finalDate2==%@",finalDate2); 

你得到像

enter image description here

+0

你是否有解决方案 –

+0

这对我的作品感谢你。 :) –

+0

@AbbinVarghese - welcome –

0

如果我理解你正确地质疑,2300实际上是23:00,即晚上11点。 所以,首先你需要从字符串获取日期,只有我能想到的与你得到的数据的方法是使用Substring

- (NSDate*) getDateFromweb:(NSString *)dateString 
{   
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 
    [dateFormatter setLocale:[NSLocale systemLocale]]; 
    [dateFormatter setDateFormat:@"HHmm"]; 
    NSDate *date = [dateFormatter dateFromString:dateString]; 

    [dateFormatter setDateFormat:@"hh:mm a"]; 
    NSString *pmAm = [dateFormatter stringFromDate:date]; 

    return pmAm; 
} 

添加系统区域设置和时区的建议从abizern。 这也将不承担datestring有4位

+0

这假设格式将始终为4位数。此外,您不考虑时区或地区。 – Abizern

+0

@Abizern请不要期望答案通过100%的测试用例。它只是一个sudo代码来获得解决方案。它可以根据使用情况进行优化。 – Bonnie

+1

为什么不使用“HHmm”而不是“HH:mm”? –