• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Android format zapisu czasu

Object Storage Arubacloud
0 głosów
416 wizyt
pytanie zadane 8 stycznia 2019 w Android, Swift, Symbian przez xSebax Początkujący (270 p.)
edycja 8 stycznia 2019 przez xSebax
Witam, szukam jakiegoś typu/formatu danych do przechowywania czasu w aplikacji na androida. Interesują mnie dokładnie godziny i minuty. Godzina będzie zapisywana i pobierania z pliku, więc szukam jakiegoś formatu, który łatwo będzie zmienić ze Stringa. Ze względu na to że będę używał tej zmiennej do sortowania myślałem żeby po prostu trzymać je w long'u (bo w int się zapewne nie zmieści), ale nie mam pojęcia w jaki sposób później mam zamienić otrzymaną liczbę (i jak wygenerować takiego longa) na taki format żeby dało się go wyświetlić jako zwykła godzina. Godzinę będę pobierał z TimePickera.

1 odpowiedź

0 głosów
odpowiedź 9 stycznia 2019 przez JAKUBW Nałogowiec (33,470 p.)

Najwydajniejszym formatem będzie timestamp czyli liczba sekund lub milisekund od 1 stycznia 1970 roku.

Jest on przechowywany w zmiennej typu long, więc operacje typu sortowanie są bardzo szybkie - w końcu to tylko liczba.

Jeśli chodzi o wady to po pierwsze - nie human redable, np. gdy piszę tą odpowiedź jest 1547025352. Nic nam to ludziom nie mówi. To ma znaczenie podczas debugowania. Po drugie - możesz mieć problem z strefami czasowymi, gdyż timestamp nie zawiera żadnych informacji o nich. 

Aby pobrać aktualny timestamp (w Android używa się wersji z milisekundami) piszesz:

long now = System.currentTimeInMillis();

jak chcesz dwa dni wcześniej:

long twoDaysAgo = System.currentTimeInMillis() - (24 * 60 * 60 * 1000) * 2

Jednak gdy chcesz wyświetlić musisz użyć parsera:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH)
String date = sdf.format(new Date(now))
// date jest teraz "2019-01-09 10:22:47"

Jak chcesz zmienić string w timestamp to odwrotnie:

long timestamp = sdf.parse("2019-01-13 23:54:12").getTime();

Warto spojrzeć do dokumentacji SimpleDateFormat, aby wiedzieć co te literki oznaczają

Ten format w stringu jest o tyle dobry, że też może służyć sortowaniu, jednak już mniej wydajnym. Aby móc sortować datami w stringu pamiętaj, że muszą mieć najpierw rok, potem miesiąc itd. nie odwrotnie tak jak zazwyczaj ludzie w Polsce piszą.

Fajną klasą jest też Calendar, bo ma kilka świetnych metod do ,,chodzenia po datach"

Calendar c = Calendar.getInstance(); //domyślnie jest teraz
c.set(year, month, day);
c.set(Calendar.HOUR_OF_DAY, 20);

int dayOfYear = c.get(Calendar.DAY_OF_YEAR);
c.add(Calendar.DAY_OF_YEAR, 15); //przesuwamy datę o 15 dni do przodu

long timestamp = c.getTimeInMillis();

Czego użyć w bazie danych Sqllite? String albo timestamp, osobiście wolę timestamp, bo mniej miejsca zajmuje i jest szybszy.

Podobne pytania

0 głosów
1 odpowiedź 429 wizyt
pytanie zadane 5 września 2020 w Android, Swift, Symbian przez Zaqu93 Gaduła (4,850 p.)
0 głosów
0 odpowiedzi 150 wizyt
pytanie zadane 5 maja 2020 w Android, Swift, Symbian przez Jezdi Nowicjusz (140 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...