将 NSString(例如:“2300”)转换为 NSDate(iOS)

Convert NSString (eg: "2300") to NSDate (iOS)

我正在尝试将 NSString 这样的“2300”格式转换为 NSDate 格式。 (注意:23后面没有冒号)

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

谢谢你:)

如果我没听错的话,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 的建议添加了系统区域设置和时区。 这也不会假设日期字符串有 4 个数字

我这里添加了三种类型,你需要选择哪种类型

类型-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);

类型-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);

你得到的输出像