2010-12-08 7 views
0

Alle NSDate Zeug ist eine Menge zu nehmen! Ich habe ein float, dass der Dezimalbruch einen 24-Stunden-Tages ist und ich möchte es im Format hh:mm AM/PM.Erstellen Sie eine Zeit Zeichenfolge von einem Bruchteil eines Tages

Ich wette, es ist ein Einzeiler auf ein NSString konvertieren, wenn Sie wissen, was Sie tun ...;)

+0

Bitte zeigen Sie uns den Code, den Sie bereits haben. –

+0

Ich habe eine Reihe von Funktionen, die verschiedene Dinge über die Position der Sonne im Himmel berechnen. Unter ihnen sind die Zeit von Sonnenaufgang und Sonnenuntergang. Aber anstatt meinen sunriseLabel.text auf "0.3452" zu setzen, möchte ich es in einem schönen hh: mm Format haben. Ich verwende bereits einen NSDateFormatter, um den Monat und das Jahr und den Tag zu bekommen ... \t [formatter setDateFormat: @ "dd"]; NSString * dayString = [formatter stringFromDate: [NSDate date]]; int Tag = [TagString IntValue]; – Steve

Antwort

1

Vielleicht so etwas?

float day_fraction = 0.45; // This is your input fraction-of-day. 

int day_seconds = 24 * 3600 * day_fraction; 
NSDate *tod = [NSDate dateWithTimeIntervalSince1970:day_seconds]; 

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"hh:mma"]; 
[dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 

NSString *dateString = [dateFormat stringFromDate:tod]; 
NSLog(@"date: %@", dateString); 

Ergebnis:

date: 10:48AM 
+0

Perfekt! Funktioniert großartig und noch besser, ich verstehe es jetzt selbst zu benutzen. Vielen Dank! – Steve

Verwandte Themen