Mam obiekt daty Java:
Date currentDate = new Date();
To poda aktualną datę i godzinę. Przykład:
Thu Jan 12 10:17:47 GMT 2012
Zamiast tego chcę uzyskać datę, zmieniając ją na godzinę wstecz, więc powinna dać mi:
Thu Jan 12 09:17:47 GMT 2012
Jaki byłby najlepszy sposób na zrobienie tego?
mktime
odpowiednik w javie? odjąć od tego 60 minut?Odpowiedzi:
java.util.Calendar
java.util.Date
org.joda.time.LocalDateTime
Java 8: java.time.LocalDateTime
Java 8 java.time.Instant
źródło
Podobne do rozwiązania @Sumit Jain
lub
źródło
Date currentDate = new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(10));
To powinno być 10 minut za?tl; dr
W UTC :
Lub strefowe:
Korzystanie z java.time
Java 8 i nowsze mają wbudowaną nową strukturę java.time .
Instant
Jeśli zależy Ci tylko na czasie UTC (GMT), użyj
Instant
klasy.Zrzuć na konsolę.
Zwróć uwagę, jak w tej chwili zdarzyło się przeskoczyć z powrotem do wczorajszej daty.
ZonedDateTime
Jeśli zależy Ci na strefie czasowej, użyj
ZonedDateTime
klasy. Możesz zacząć od natychmiastowego i przypisać strefę czasową,ZoneId
obiekt. Ta klasa obsługuje niezbędne korekty anomalii, takich jak czas letni (DST) .Zrzuć na konsolę.
Konwersja
Stare klasy java.util.Date/.Calendar są teraz przestarzałe. Unikaj ich. Są notorycznie kłopotliwe i zagmatwane.
Jeśli musisz użyć starych klas do pracy ze starym kodem, który nie został jeszcze zaktualizowany dla typów java.time, wywołaj metody konwersji. Oto przykładowy kod przechodzący z funkcji Instant lub ZonedDateTime do java.util.Date.
…lub…
Informacje o java.time
Struktura java.time jest wbudowana w Javę 8 i nowsze. Klasy te kłopotliwe zastąpić stary starszych klas Date-Time, takich jak
java.util.Date
,Calendar
, iSimpleDateFormat
.Projekt Joda-Time , obecnie w trybie konserwacji , zaleca migrację do klas java.time .
Aby dowiedzieć się więcej, zobacz samouczek Oracle . I przeszukaj Stack Overflow, aby znaleźć wiele przykładów i wyjaśnień. Specyfikacja to JSR 310 .
Możesz wymieniać obiekty java.time bezpośrednio ze swoją bazą danych. Użyj sterownika JDBC zgodnego z JDBC 4.2 lub nowszym. Nie ma potrzeby stosowania ciągów ani
java.sql.*
klas.Skąd wziąć klasy java.time?
Projekt ThreeTen-Extra rozszerza java.time o dodatkowe klasy. Ten projekt jest poligonem doświadczalnym dla ewentualnych przyszłych dodatków do java.time. Można znaleźć kilka przydatnych klas tutaj takie jak
Interval
,YearWeek
,YearQuarter
, i więcej .źródło
Użyj kalendarza .
źródło
Lub korzystając ze słynnej biblioteki Joda Time :
źródło
Po prostu odejmij liczbę milisekund w godzinie od daty.
currentDate.setTime(currentDate.getTime() - 3600 * 1000));
źródło
Możesz użyć poniższego kodu dla daty i godziny:
Wynik :
Ten link jest dobry: Zobacz tutaj
I zobacz: Zobacz też
I: Tutaj
I: Tutaj
I: Tutaj
Jeśli potrzebujesz tylko czasu:
źródło
Można to osiągnąć za pomocą
java.util.Date
. Poniższy kod odejmie 1 godzinę od daty.Podobnie jest w przypadku odejmowania 20 sekund od daty
źródło
Uzyskaj czas w milisekundach, minus minuty w milisekundach i przekonwertuj go na datę. Tutaj musisz zobiektywizować !!!
źródło
U mnie zadziałało zamiast tego przy użyciu formatu. Aby pracować z czasem, po prostu użyj metod parse i toString ()
String localTime = "6:11"; LocalTime localTime = LocalTime.parse (czas lokalny)
LocalTime lt = 6:11; localTime = lt.toString ()
źródło