In diesem Lernprogramm erfahren Sie, wie Sie mit Datum und Uhrzeit in Java und in Android-Anwendungen arbeiten. Datums- und Uhrzeitdaten können auf verschiedene Arten ermittelt, geändert und gespeichert werden.
Android-Anwendungen sind in Java, einer Programmiersprache, geschrieben. Java verfügt über eine Reihe von primitiven Datentypen für verschiedene Arten von Zahlen (Ganzzahlen, Gleitkommazahlen usw.), boolesche Werte und einzelne Zeichen. Java enthält außerdem zahlreiche Klassen zum Speichern, Formatieren und Ändern von Datums- und Zeitdaten zur Verwendung in Ihren Android-Anwendungen. In diesem Lernprogramm erfahren Sie, wie Sie das aktuelle Datum und die aktuelle Uhrzeit ermitteln, Datums- und Uhrzeitdaten speichern und auf verschiedene Weise anzeigen.
Technisch benötigen Sie keine Tools, um dieses Tutorial abzuschließen, aber Sie werden sie sicherlich benötigen, um Android-Anwendungen zu entwickeln.
Um Android-Anwendungen (oder auch beliebige Java-Anwendungen) zu entwickeln, benötigen Sie eine Entwicklungsumgebung zum Schreiben und Erstellen von Anwendungen. Eclipse ist eine sehr beliebte Entwicklungsumgebung (IDE) für Java und die bevorzugte IDE für Android-Entwicklung. Es ist für Windows-, Mac- und Linux-Betriebssysteme kostenlos verfügbar.
Vollständige Anweisungen zur Installation von Eclipse (einschließlich der unterstützten Versionen) und des Android SDK finden Sie auf der Android-Entwicklerwebsite.
Das Wichtigste zuerst: Das Datum und die Uhrzeit sind im Wesentlichen zwei Teile derselben Dateneinheit (ein Zeitpunkt). Wenn Sie Datum und Uhrzeit in einem Computer speichern, kann es hilfreich sein, an Ihre erste Computerklasse zu denken und daran zu erinnern, dass alle Daten auf einem Computer aus „Einsen und Nullen“ bestehen. Computer (und Android-Geräte sind keine Ausnahme) haben nicht wirklich ein Zeitgefühl wie Menschen, sondern behalten eine numerische Darstellung des aktuellen Datums oder der aktuellen Uhrzeit bei (immer vorwärts, jeweils eine Millisekunde), und diese Informationen dann formatieren verschiedene Möglichkeiten für bestimmte Zwecke. Schließlich wird ein einzelner Zeitpunkt in Abhängigkeit von Ihrer Zeitzone oder Ihrem Standort, ob Sie (oder Ihre Region) die Sommerzeiteinsparung oder verschiedene andere Faktoren erkennen, unterschiedlich interpretiert.
Hinzu kommt, dass Datum und Uhrzeit in verschiedenen Kulturen und Orten unterschiedlich angezeigt werden. In den Vereinigten Staaten formatieren wir beispielsweise unsere Daten häufig wie folgt: 6. April 1981 oder 04. Juni 1981, wohingegen der Tag in Europa normalerweise vor dem Monat steht: 6. April 1981 oder 06/04 / 1981. Ebenso haben einige Länder das Konzept von AM und PM mit 12 Stunden, während andere lediglich eine 24-Stunden-Uhr verwenden.
Computer einschließlich Android-Geräte berechnen Zeiten und Datumsangaben als eine einzige Zahl (eine lange Zahl), die mit der Zeit immer größer wird. Die Anzahl selbst entspricht der Anzahl von Millisekunden, die seit einem bestimmten Datum in der Vergangenheit vergangen sind. In diesem Fall ist der Zeitpunkt, zu dem der "Zeitpunkt" begann, zu ticken: Mitternacht, 1. Januar 1970. Dieser Mechanismus wird als Unix-Zeit oder POSIX-Zeit bezeichnet.
Pop Quiz! Welche der folgenden Zeichenketten stellt den 4. Monat des (Gregorianischen) Kalenderjahres richtig dar: A, April, APR, Apr, 4 oder 04? Die Antwort? Alle von ihnen. Das Arbeiten mit Datum und Uhrzeit erscheint schon etwas kompliziert, oder? Tatsächlich haben wir alle Java-Nachschlagewerke in unserem Büro (nicht unwesentlich) und einige wenige Datums- und Uhrzeitangaben in erheblicher Weise durchgesehen. Aber keine Panik. Akzeptieren Sie einfach die Tatsache, dass Sie als Entwickler einige Anstrengungen unternehmen müssen, um zwei Ziele zu erreichen:
1. Ihr externes Ziel: Damit der Benutzer mit den Datums- und Zeitformaten arbeiten kann, mit denen er am vertrautesten ist oder zumindest vertraut ist.
2. Ihr internes Ziel: Um Ihren Anwendungscode formatunabhängig zu halten, funktioniert er überall ohne großen Aufwand.
Lassen Sie uns nun ein wenig über jedes dieser Ziele sprechen.
Haben Sie jemals bemerkt, dass nur wenige Reisewebseiten die Datums- oder Uhrzeitinformationen manuell eingeben können? Stattdessen verlassen sie sich auf Kalenderpflücker und feste Dropdowns für Tag, Monat und Jahr oder setzen mindestens ein bestimmtes Datumsformat ein (normalerweise an Ihre Sprache / Ihr Land gebunden, nach dem sie vorher gefragt haben). Aus Sicht der Benutzeroberfläche sollten Ihre Apps Datums- und Zeitnuancen zumindest teilweise berücksichtigen. Sie sollten jedoch auch sorgfältig prüfen, auf welche Weise der Benutzer Datum und Uhrzeit eingeben kann. Indem Sie in Ihren Android-Apps standardmäßige Datums- und Zeitangaben verwenden, z. B. DatePicker und TimePicker, beschränken Sie effektiv die Daten, die die Benutzer eingeben können. Diese Daten können einfach in entsprechende Datums- und Zeitstrukturen konvertiert werden, ohne dass jedes bekannte Format analysiert werden muss erwähne seine Tippfehler).
Aus Sicht des internen Codes sollten Ihre Apps eine generische Datums- / Zeitdarstellung verwenden, die nicht auf diesen Nuancen beruht.
In Java werden Datums- und Zeitangaben auf verschiedene Arten gespeichert, abhängig von Ihren Anforderungen.
Es gibt verschiedene Möglichkeiten, die aktuelle Uhrzeit auf einem Android-Gerät zu ermitteln.
Sie können die Rohdaten für Datum und Uhrzeit mithilfe der statischen Methode in der Systemklasse (java.lang.System) ermitteln:
long msTime = System.currentTimeMillis (); Datum curDateTime = neues Datum (msTime);
Diese Methode hängt von der Zeit ab, zu der das Gerät verwendet wird denkt es ist, was zuverlässig sein kann oder nicht. Eine andere Methode zum Ermitteln des aktuellen Datums und der aktuellen Uhrzeit verwendet den Standardkonstruktor für die Klasse Date, die ein Date-Objekt mit dem aktuellen Datum und der aktuellen Uhrzeit erstellt:
Date anotherCurDate = neues Datum ();
Es gibt noch andere Methoden, um die genaue Zeit zu ermitteln, auf der Computer häufig bekannte Server überprüfen, um sicherzustellen, dass sich alle "synchronisieren". Dieser Prozess geht zwar etwas außerhalb des Rahmens dieses Tutorials, aber es genügt zu sagen, dass das Anfordern und Empfangen der richtigen Zeit einige Zeit in Anspruch nimmt, was erst dann in Betracht gezogen werden muss, bevor die Synchronisation wirklich erreicht werden kann.
(Hinweis: Android-Geräte, die eine Verbindung zu Mobilfunkdiensten herstellen, verfügen in der Regel über Datums- und Zeitangaben in der Ortszeit, da diese bei der Kommunikation mit den Funktürmen verwendet werden können.)
Was ist, wenn Sie ein Datum oder eine Zeitvariable aus einem bestimmten Datum erstellen möchten, z. B. einem Geburtstag. Vielleicht wissen Sie, ganz in der Nähe Ihres Kopfes, die Anzahl der Millisekunden seit dem 1. Januar 1970 um Mitternacht, die Ihren Geburtstag darstellt. In meinem Fall wären das etwa 229703700 Millisekunden oder der Morgen des 12. April 1977 (bereinigt um kalifornische Zeit). Wie Sie sehen können, ist dies jedoch sehr umständlich. Was Sie wirklich wollen, ist: Computer, erstellen Sie eine Datums- / Zeitvariable, die den 12. April 1977 darstellt. Hier kommt die Kalender-Klasse ins Spiel:
GregorianCalendar bday = neuer GregorianCalendar (1977, Calendar.APRIL, 12);
Sie können Kalenderobjekte verwenden, um Datumsangaben zu ändern und interessante Informationen dazu zu extrahieren. Sie können beispielsweise die Methode get () verwenden, um den Wochentag zu bestimmen, an dem ich geboren wurde:
int dayOfWeek = bday.get (Calendar.DAY_OF_WEEK); // Gibt 3 für Dienstag zurück!
Beachten Sie, dass die Monate des Kalenders 0-basiert sind. Januar ist also Monat 0 und nicht Monat 1. April ist also Monat 3 und nicht 4. Schließlich können Sie ein Date-Objekt aus einer Kalender-Datumskonfiguration mithilfe von getTime () extrahieren. Methode.
Sie können die Helfer-Klasse DateFormat (java.text.DateFormat) verwenden, um unformatierte Datums- und Uhrzeitinformationen in verschiedene String-Formate (für verschiedene Gebietsschemata usw.) zu konvertieren oder String-Informationen in die entsprechenden Datums- und Uhrzeitbits für die Verwendung im Code zu parsen.
Beispielsweise können Sie die SimpleDateFormat-Klasse (eine Unterklasse der DateFormat-Klasse) verwenden, um eine benutzerdefinierte Zeichenfolge mit Datums- und Uhrzeitinformationen zu erstellen. Zuerst müssen Sie Ihre Formatzeichenfolge angeben, indem Sie die entsprechenden Codes für die verschiedenen Informationen verwenden (weitere Informationen zu den einzelnen Codes finden Sie in der Dokumentation zu SimpleDateFormat). Dann wenden Sie diese Informationen auf ein bestimmtes Datum oder eine bestimmte Uhrzeit an. Zum Beispiel:
Date anotherCurDate = neues Datum (); SimpleDateFormat formatter = new SimpleDateFormat ("EEEE, MMMM d 'bei' hh: mm a 'im Jahr' yyyy G '); String formattedDateString = formatter.format (anotherCurDate);
Wenn Sie den String mit dem Namen formatattedDateString drucken, wird möglicherweise Folgendes angezeigt: "Montag, 6. Dezember um 08:34 Uhr im Jahr 2010 n. Chr.".
Im Übrigen können Sie auch die DateFormat- und SimpleDateFormat-Klassen verwenden, um Datums- und Zeitzeichenfolgen in die entsprechende Date-Klasse zu parsen. Hoffentlich verbringen Sie nicht viel Zeit damit, vom Benutzer eingegebene Daten zu analysieren (was im Allgemeinen ziemlich ärgerlich ist), aber ein Analysemechanismus ist hilfreich. Beispielsweise möchten Sie Zeitstempel aus einer XML-Datei analysieren, in denen Sie das Format des Zeitstempels im Voraus kontrollieren oder kennen und daher die entsprechende Formatzeichenfolge zum Analysieren generieren können.
Es gibt zahlreiche Möglichkeiten, Datums- und Uhrzeitinformationen für den Benutzer anzuzeigen. Wie Sie sich entscheiden, hängt von Ihren Anforderungen ab.
Am einfachsten ist es vielleicht, ein bestimmtes Datum oder eine bestimmte Uhrzeit als ordnungsgemäß formatierte Zeichenfolge anzuzeigen. Diese Methode ist am sinnvollsten für feste Daten oder Uhrzeiten wie Geburtstage oder Ereignisse. Verwenden Sie einfach die DateFormat-Dienstprogrammklasse, um die entsprechende Zeichenfolge zu erstellen und sie wie jeden anderen Text (z. B. innerhalb eines TextView-Steuerelements) auf dem Bildschirm anzuzeigen..
Um die Zeit „in Echtzeit“ anzuzeigen, können Sie entweder die AnalogClock-Steuerung (siehe Abbildung) oder die DigitalClock-Steuerelemente verwenden.
Tipp: Suchen Sie nach einem Timer? Schauen Sie sich die Chronometersteuerung an.
Datum und Uhrzeit sind wichtige Datentypen, mit denen Java-Entwickler zwangsläufig arbeiten müssen. Intern speichern Geräte Datums- und Uhrzeitinformationen numerisch. Die Benutzer interpretieren diese Informationen jedoch auf unterschiedliche Art und Weise und verwenden unterschiedliche Formate. Behalten Sie diese Nuancen unter Kontrolle, indem Sie die Möglichkeiten einschränken, in denen Benutzer Datum und Uhrzeit mithilfe der integrierten Steuerelemente für die Auswahl eingeben können, und sicherstellen, dass Ihr Code eine generische Darstellung dieser Informationen verwendet, beispielsweise mithilfe einer der vielen verfügbaren Klassen zum Speichern von Datums- und Uhrzeitinformationen.
Die mobilen Entwickler Lauren Darcey und Shane Conder haben mehrere Bücher zur Android-Entwicklung mitgeschrieben: ein ausführliches Programmierbuch mit dem Titel Android Wireless-Anwendungsentwicklung und Sams TeachYourself Entwicklung von Android-Anwendungen in 24 Stunden. Wenn sie nicht schreiben, verbringen sie ihre Zeit damit, mobile Software in ihrem Unternehmen zu entwickeln und Beratungsdienste anzubieten. Sie können sie per E-Mail an [email protected], über ihren Blog unter androidbook.blogspot.com und über Twitter @androidwireless erreichen.