2013-03-15 17 views
15

szukają jakiejś pomocy z odrobiną kodu Java Pracuję, mam następujący kod, który drukuje datę i czas:Java Datownik - Dodawanie pięciu minut

Date dNow = new Date(); // Instantiate a Date object 
    SimpleDateFormat ft = new SimpleDateFormat ("MMM d, yyyy k:mm:ss"); // Time at server 

Wynik: 15 marca 2013 10:19:48

Tworzę licznik javascript do pracy z tego numeru i odliczanie od 5 minut. Więc muszę dodać 5 minut do aktualnej daty w Javie.

Tak więc, jeśli obecny czas jest data: 15 marca 2013 10:19:48

muszę dodać 5 minut Java tak, że wypisuje: Mar 15, 2013 10:24:48

Jakieś pomysły?

Odpowiedz

34

Zamiast zaczynając

new Date() 

początek z

new Date(System.currentTimeMillis()+5*60*1000) 

To daje Date instancji, który reprezentuje swój wymagany punkt w czasie . Nie musisz zmieniać żadnej innej części kodu.

+1

Perfect, dzięki Marko – Scott

5

Użyj tego ...

Calendar calendar = Calendar.getInstance(); 
    System.out.println(calendar.getTime()); 
    calendar.add(Calendar.MINUTE, 5); 
    System.out.println(calendar.getTime()); 
12

Należy użyć Calendar class manipulować Data i czas:

Klasa Kalendarz jest klasą abstrakcyjną, która zapewnia sposoby konwersji między określonym momencie czasu oraz zestaw kalendarzowych takich dziedzinach jak ROKU, miesiąc, DAY_OF_MONTH, godzina, i tak dalej, i dla manipulowania pola kalendarza, takich jak uzyskiwanie datę następnego tydzień

Date dNow = new Date(); // Instantiate a Date object 
    Calendar cal = Calendar.getInstance(); 
    cal.setTime(dNow); 
    cal.add(Calendar.MINUTE, 5); 
    dNow = cal.getTime(); 
+1

Nigdy nie należy używać klasy Kalendarz na wszystko. Używaj czasu Joda do tych manipulacji. –

+0

@ ThorbjørnRavnAndersen cóż, słyszę ppl mówiąc to cały czas. Osobiście nigdy nie używam czasu Jody. Słyszałem, że manipulowanie datą jest całkiem proste. ale jeśli chcesz manipulować datami przy użyciu standardowego interfejsu API, to kalendarz jest drogą do zrobienia. Jednakże, czytałem gdzieś, że czas Joda byłby częścią standardowego interfejsu API javy od java 8. :) – PermGenError

+3

To jest [JSR 310] (http://jcp.org/en/jsr/detail?id=310) i nie będzie to zupełnie nowy interfejs API, tylko pod silnym wpływem JodaTime. –

0

Daty Java używają Unix time w milisekundach. Więc obliczysz, ile 5 minut jest w milisekundach i dodajesz je do swojej daty lub używasz klasy Kalendarz, która robi to za Ciebie.

2
Date dNow = new Date(System.currentTimeMillis()+5*60*1000) 
SimpleDateFormat ft = new SimpleDateFormat ("MMM d, yyyy k:mm:ss"); 
System.out.println(ft.format(dNow)); 

za pomocą metody przestarzałej getMinutes(),setMinutes(int)

Date dNow = new Date(); // Instantiate a Date object 
int mm = dNow.getMinutes(); 
dNow.setMinutes(mm+5); 
0

tl; dr

Instant.now() 
     .plusSeconds(TimeUnit.MINUTES.toSeconds(5)) 
     .toString() 

2017-01-23T03: 11: 53.763Z

Szczegóły

innych odpowiedzi są przestarzałe jak Java 8. kłopotliwe starych klas date-time są teraz Legacy, wyparta przez java klasy .time.

Klasa Instant reprezentuje moment na osi czasu w UTC z rozdzielczością nanoseconds (do dziewięciu (9) cyfr ułamka dziesiętnego).

Instant instant = Instant.now(); 

Ta klasa może wykonywać obliczenia matematyczne, takie jak dodanie liczby sekund. Możemy użyć wyliczenia TimeUnit, aby ukryć nasze pożądane pięć minut w ciągu kilku sekund.

long seconds = TimeUnit.MINUTES.toSeconds(5); 
Instant fiveMinutesLater = instant.plusSeconds(seconds); 

Aby wygenerować ciąg w standardowym formacie ISO 8601, zadzwoń toString.

String output = fiveMinutesLater.toString(); 

Aby wygenerować ciągi w innych formatach, używać klasy ZonedDateTime i DateTimeFormatter klasę. Przeszukaj przepełnienie stosu w wielu przykładach i dyskusjach na temat tych klas.


O java.time

Ramy java.time jest wbudowana w Java 8 i późniejszych. Klasy te zastępują kłopotliwe stare klasy z datami, takie jak java.util.Date, Calendar, & SimpleDateFormat.

Projekt Joda-Time, teraz w maintenance mode, zaleca migrację do klas java.time. Aby uzyskać więcej informacji, zobacz

. I wyszukaj Stack Overflow dla wielu przykładów i objaśnień. Specyfikacja to JSR 310.

Gdzie można uzyskać lekcje java.time?

Projekt ThreeTen-Extra rozciąga java.time z dodatkowych zajęć. Ten projekt jest poligonem wskazującym na możliwe przyszłe dodatki do java.time. Możesz znaleźć tutaj kilka użytecznych klas, takich jak Interval, YearWeek, YearQuarter i more.

0

Można próbować ten jeden najlepszy wynik


             
  
GregorianCalendar gc = new GregorianCalendar(); 
 
      gc.setTimeInMillis(System.currentTimeMillis()); 
 
      gc.add(Calendar.MINUTE, -5); 
 
      System.out.println(new java.util.Date().getTime()); 
 
      System.out.println(new java.util.Date(gc.getTime().getTime()).getTime());