Hallo zusammen,
ich sitz im Moment an einem kniffeligen Problem. Und zwar kann der User in meiner Mac App in einem Window ein Datum und eine Uhrzeit auswählen. Diese Auswahl wird persistent von dem App gespeichert. Nun öffnet sich bei jedem Start der Anwendung ein anderes Fenster. lädt die zuvor gespeicherten Daten und er soll initial erstmal die Differenz zwischen dem gespeicherten DAtum (Zeitpunkt) und dem jetzigen Zeitpunkt in der Form:
TTT Tage HH Stunden MM Minuten SS Sekunden!
Natürlich soll das ganze ab dann wie eine Uhr funktionieren.
Alles soweit kein Problem. Mit folgenden Codeausschnitt:
konnte ich schonmal initial die Differenz anzeigen. Allerdings hatte ich da den Eindruck, dass die Berechnung nicht stimmen kann. Mein Startdatum war der 12.12.2011 16 Uhr und mein damaliges aktuelles Datum 15.12.2011.
Angezeigt wurden mir 40 Minuten. Irgendetwas kann also nicht richtig sein. Das Hochzählen allerdings funktioniert mit einem NSTimer.
Vielleicht hängt es damit zusammen, dass das NSDate mit dem Startdatum per Binding von einem Datepicker gesetzt wird?
Weiterhin bin ich kein mathematischer Mensch und kann mir in der Rechnung nicht vorstellen, wie man nun Tage anzeigt und vllt. sogar Jahre, Wochen?
Meine grundlegende Frage ist daher noch: Geht das nicht einfacher ?
wenn ja wäre ich für ein entsprechenden Codeschnipsel sehr dankbar.
Gruß
MasterOP22
ich sitz im Moment an einem kniffeligen Problem. Und zwar kann der User in meiner Mac App in einem Window ein Datum und eine Uhrzeit auswählen. Diese Auswahl wird persistent von dem App gespeichert. Nun öffnet sich bei jedem Start der Anwendung ein anderes Fenster. lädt die zuvor gespeicherten Daten und er soll initial erstmal die Differenz zwischen dem gespeicherten DAtum (Zeitpunkt) und dem jetzigen Zeitpunkt in der Form:
TTT Tage HH Stunden MM Minuten SS Sekunden!
Natürlich soll das ganze ab dann wie eine Uhr funktionieren.
Alles soweit kein Problem. Mit folgenden Codeausschnitt:
Quellcode
- - (void)tick:(NSTimer *)theTimer
- {
- NSTimeInterval interval = -[startDate timeIntervalSinceNow];
- int seconds = ((int) interval) % 60;
- int minutes = ((int) (interval - seconds) / 60) % 60;
- int hours = ((int) interval - seconds - 60 * minutes) % 3600;
- [elapsedTime setStringValue:[NSString stringWithFormat:@"%.1d:%.2d:%.2d", hours,
- minutes, seconds]];
- }
konnte ich schonmal initial die Differenz anzeigen. Allerdings hatte ich da den Eindruck, dass die Berechnung nicht stimmen kann. Mein Startdatum war der 12.12.2011 16 Uhr und mein damaliges aktuelles Datum 15.12.2011.
Angezeigt wurden mir 40 Minuten. Irgendetwas kann also nicht richtig sein. Das Hochzählen allerdings funktioniert mit einem NSTimer.
Vielleicht hängt es damit zusammen, dass das NSDate mit dem Startdatum per Binding von einem Datepicker gesetzt wird?
Weiterhin bin ich kein mathematischer Mensch und kann mir in der Rechnung nicht vorstellen, wie man nun Tage anzeigt und vllt. sogar Jahre, Wochen?
Meine grundlegende Frage ist daher noch: Geht das nicht einfacher ?
wenn ja wäre ich für ein entsprechenden Codeschnipsel sehr dankbar.
Gruß
MasterOP22