2015-07-05 14 views
5

:24 saatlik zaman sadece zaman ve aşağıdaki dizesinden o da 24 saat formatını almaya çalışıyorum

7/2/2015 2:30:00 PM

Bu Ben denedim ne:

-(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; 
} 

Çıktı: 4:30

Bu dönüyor doğru saati ama 12 saat biçiminde. 24 saat formatında zamanı istiyorum.

İstenilen çıktı: 16:30

+2

"a" biçimini istediğiniz biçimde silin. am/pm. Ayrıca ShortStyle ve RelativeDate biçimlendirici ifadelerini de silin. Bakınız: [ICU Biçimlendirme Tarihleri ​​ve Zamanları] (http://userguide.icu-project.org/formatparse/datetime) – zaph

+1

@zaph: Wao !!! Tüm önerdiğin şeyi değiştirdim. Mükemmel çalıştı. – Nitish

+0

Cevabımı görün, sizin için uygun olup olmadığına bakın. – zaph

cevap

4

söz konusu çok koduna yol yoktur, bu deneyin:

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

Çıktı:

dateString: 16:30

+1

Tam olarak neye ihtiyacım vardı. – Nitish

+2

Ayrıca, kullanıcının cihazdaki 24 saatlik zaman ayarıyla ilgili sorunları önlemek için 'en_US_POSIX' özel bölgesini de kullanmanız gerekir. – rmaddy

+0

@zaph: Bir şey buldum. Bu, iPhone'un ayarı 12 saate ayarlandığında, ancak 24 saat biçiminde değiştirildiğinde, 00:00 olarak dateString alıyorum. Herhangi bir fikir ? – Nitish

İlgili konular