从日期字符串开始24小时

Nit*_*ish 5 objective-c nsdate nsdateformatter ios

我试图从以下字符串获得24小时格式的时间和时间:

2015年7月2日下午2:30:00

这是我尝试过的:

-(NSString*)returnDate:(NSString*)dateString
{

    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
    [dateFormatter1 setDateFormat:@"MM/dd/yyyy hh:mm:ss aaa"];
    NSDate *date = [dateFormatter1 dateFromString:dateString];

   dateString = [date descriptionWithLocale:[NSLocale systemLocale]];



    NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone];
    NSTimeZone *utcTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];

    NSInteger currentGMTOffset = [currentTimeZone secondsFromGMTForDate:date];
    NSInteger gmtOffset = [utcTimeZone secondsFromGMTForDate:date];
    NSTimeInterval gmtInterval = currentGMTOffset - gmtOffset;

    NSDate *destinationDate = [[NSDate alloc] initWithTimeInterval:gmtInterval sinceDate:date];

    NSDateFormatter *dateFormatters = [[NSDateFormatter alloc] init];
    [dateFormatters setDateFormat:@"HH:mm a"];
    [dateFormatters setDateStyle:NSDateFormatterShortStyle];
    [dateFormatters setTimeStyle:NSDateFormatterShortStyle];
    [dateFormatters setDoesRelativeDateFormatting:YES];
    [dateFormatters setTimeZone:[NSTimeZone systemTimeZone]];
    dateString = [dateFormatters stringFromDate: destinationDate];

    return dateString;
}
Run Code Online (Sandbox Code Playgroud)

输出:4:30

这是返回正确的时间,但是以12小时格式.我想要24小时格式的时间.

期望的输出:16:30

zap*_*aph 4

问题中有很多代码,试试这个:

NSString *dateString = @"7/2/2015 4:30:00 PM";

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];

[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss aaa"];
NSDate *date = [dateFormatter dateFromString:dateString];

[dateFormatter setDateFormat:@"HH:mm"];
dateString = [dateFormatter stringFromDate: date];

NSLog(@"dateString: %@", dateString);
Run Code Online (Sandbox Code Playgroud)

输出:

日期字符串:16:30

  • 您还需要使用“en_US_POSIX”的特殊区域设置,以避免由于用户在设备上的 24 小时时间设置而导致的问题。 (2认同)