Jak poprawnie sformatować zgodnie z datą i godziną konfiguracji urządzenia, mając rok, miesiąc, dzień, godzinę i minutę?
321
Użyj standardowej klasy Java DateFormat.
Na przykład, aby wyświetlić bieżącą datę i godzinę, wykonaj następujące czynności:
Date date = new Date(location.getTime());
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTimeText.setText("Time: " + dateFormat.format(date));
Możesz zainicjować obiekt Date własnymi wartościami, należy jednak pamiętać, że konstruktory zostały wycofane i naprawdę powinieneś używać obiektu Java Calendar.
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
Zwrócony format daty jest typujava.text.DateFormat
(i NIEandroid.text.format.DateFormat
)Moim zdaniem
android.text.format.DateFormat.getDateFormat(context)
wprawia mnie w zakłopotanie, ponieważ metoda ta zwracajava.text.DateFormat
raczej niżandroid.text.format.DateFormat
- - ".Tak więc używam kodu fragmentu, jak poniżej, aby uzyskać bieżącą datę / godzinę w moim formacie.
Ponadto możesz używać innych formatów. Śledź DateFormat .
źródło
hh:mm:ss
da ci to01:00:00
13:00, musisz użyć,kk:mm:ss
aby uzyskać13:00:00
k
to godzina w dzień (1-24), nie masz na myśliH
, która jest godzina w dzień (0-23), np. GG: mm: ss? Zobacz: developer.android.com/reference/java/text/SimpleDateFormat.htmljava.text.SimpleDateFormat
(tym, co łączysz i używaH
do godzin w zakresie 0-23) iandroid.text.format.DateFormat
(o co chodzi w odpowiedzi i używak
do godzin w zakresie 0-23)k
, ale dokumentacja dla jasnychDateFormat
stanów Kanoniczna dokumentacja ciągów formatu znajduje się w SimpleDateFormat. Bardzo mylące. A może coś mi brakuje?Możesz użyć
DateFormat
. Wynik zależy od domyślnych ustawień regionalnych telefonu, ale możesz też określić ustawienia regionalne:https://developer.android.com/reference/java/text/DateFormat.html
To wyniki na
FR Ustawienia regionalne: 3 listopada 2017 r
US / En Locale: 12 stycznia 1952
FR Ustawienia regionalne: 03.11.2017
Ustawienia regionalne US / En: 12.13.52
FR Ustawienia regionalne: 3 listopada 2017 r
US / En Locale: 12 stycznia 1952
FR Ustawienia regionalne: 3 listopada 2017 r
US / En Locale: 12 stycznia 1952
FR Lokalizacja: sprzedawca, 3 listopada 2017
US / En Locale: wtorek, 12 kwietnia 1952 r
FR Ustawienia regionalne: 3 listopada 2017 16:04:58
FR Ustawienia regionalne: 03.11.2017 16:04
FR Ustawienia regionalne: 03.11.2017 16:04:58
FR Lokalizacja: 03/11/2017 16:04:58 GMT + 01: 00
FR Lokalizacja: 03/11/2017 16:04:58 heure normale d'Europe centrale
FR Ustawienia regionalne: 16:04:58
FR Ustawienia regionalne: 16:04
FR Ustawienia regionalne: 16:04:58
FR Ustawienia regionalne: 16:04:58 GMT + 01: 00
FR Lokalizacja: 16:04:58 heure normale d'Europe centrale
źródło
Ciąg daty Data do ustawień regionalnych:
Opcje:
-> 31 grudnia 1969 r
-> 31 grudnia 1969 16:00
-> 16:00
źródło
To zrobi to:
źródło
Użyj SimpleDateFormat
Lubię to:
źródło
new SimpleDateFormat("my-format", Locale.getDefault());
Po tym: http://developer.android.com/reference/android/text/format/Time.html
Lepiej jest korzystać z natywnej klasy czasowej Androida:
Następnie sformatuj:
źródło
Użyj tych dwóch jako zmiennych klasowych:
I użyj tego w ten sposób:
źródło
To jest moja metoda, możesz zdefiniować i format wejściowy i wyjściowy.
źródło
SimpleDateFormat
Korzystam z SimpleDateFormat bez niestandardowego wzorca, aby uzyskać aktualną datę i godzinę z systemu we wstępnie wybranym formacie urządzenia :
zwraca :
źródło
Użyj kompilacji w klasie Time!
źródło
Pozostałe odpowiedzi są ogólnie poprawne. Chciałbym przekazać nowoczesną odpowiedź. Klasy
Date
,DateFormat
iSimpleDateFormat
stosowane w większości innych odpowiedzi, dawno nieaktualne i spowodowały kłopoty dla wielu programistów przez wiele lat. Dzisiaj mamy o wiele lepszejava.time
, AKA JSR-310, nowoczesny interfejs API daty i godziny Java. Czy możesz już tego używać na Androidzie? Z całą pewnością! Nowoczesne klasy zostały przeniesione na Androida w projekcie ThreeTenABP. Zobacz to pytanie: Jak korzystać z ThreeTenABP w Android Project dla wszystkich szczegółów.Ten fragment powinien zacząć:
Gdy ustawiam preferowany język mojego komputera na angielski amerykański lub angielski brytyjski, drukuje się:
Gdy zamiast tego ustawię go na duński, otrzymuję:
Czyli postępuje zgodnie z konfiguracją. Nie jestem jednak pewien, z jakim szczegółem zależy on od ustawień daty i godziny urządzenia, i może to różnić się w zależności od telefonu.
źródło
Ten kod działa dla mnie!
źródło
Klasa formatu daty współpracuje z kodem oszukiwającym, aby ustalić datę. Lubić
Można sprawdzić kolejne kody tutaj .
źródło
Ten kod zwróci bieżącą datę i godzinę:
źródło
Widownia
Aby uzyskać datę lub godzinę w formacie lokalnym z milisekund, użyłem tego:
Data i godzina
Data
Czas
Możesz użyć innego stylu daty i czasu. Więcej informacji o stylach tutaj .
źródło
Najkrótsza droga:
%tR
jest skrótem od%tH:%tM
,<
oznacza ponowne użycie ostatniego parametru (1$
).Jest to równoważne z
String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM", Calendar.getInstance())
https://developer.android.com/reference/java/util/Formatter.html
źródło
Próbować:
A kiedy uzyskujesz dostęp do przekazywanych zmiennych:
źródło
Używam tego w ten sposób:
źródło
Unikaj juDate
Java.util.Date oraz .Calendar i SimpleDateFormat w Javie (i Androidzie) są niezwykle kłopotliwe. Unikaj ich. Są tak złe, że Sun / Oracle zrezygnowało z nich, zastępując je nowym pakietem java.time w Javie 8 (nie w Androidzie od 2014 roku). Nowy
java.time
został zainspirowany Joda-Time biblioteką .Joda-Time
Joda-Time działa w systemie Android.
Wyszukaj StackOverflow dla „Joda”, aby znaleźć wiele przykładów i wiele dyskusji.
Smakołyk kodu źródłowego przy użyciu Joda-Time 2.4.
Standardowy format.
Zlokalizowany format.
źródło
Powrót do 2016 roku, kiedy chcę dostosować format (nie zgodnie z konfiguracją urządzenia, jak pytasz ...) Zwykle używam pliku zasobów ciągów:
w strings.xml:
W działaniu:
Jest to również przydatne w wydaniu nowej Biblioteki wiążącej datę .
Więc mogę mieć coś takiego w pliku układu:
A w klasie java:
źródło
Klasa czasu Android zapewnia 3 metody formatowania http://developer.android.com/reference/android/text/format/Time.html
Oto jak to zrobiłem:
Mam nadzieję, że to pomocne :-)
źródło
Jest za późno, ale może komuś pomóc
oto
format
jaki format potrzebujesznp .: „GG: mm” zwraca 15:30
źródło