как увеличить время эпохи на 5 минут в Scala или Java

1
val df = new SimpleDateFormat("MMM dd yyyy HH:mm:ss.SSS zzz")

var date1 = new Date()

println(date1.getTime)

Результат: 1407309964324

как я могу увеличить его на 5 минут?

Теги:
datetime

5 ответов

4
Лучший ответ

Вы можете использовать календарь класса add метод для добавления указать время дня от секунд, минут, часов и т.д. в постоянная календаре.

образец:

    Date date1 = new Date();
    Calendar c = Calendar.getInstance();
    c.setTime(date1);
    c.add(Calendar.MINUTE, 5); //adds five minute to the calendar date
    System.out.println(date1.getTime()); //current time
    System.out.println(c.getTime().getTime()); //current time + 5 minutes
4

Ну, 5 минут всегда 300 000 миллисекунд, так что:

long millis = date1.getTime();
millis += 300000;
Date date2 = new Date(millis);

Или, возможно, более читаемо:

long millis = date1.getTime();
millis += TimeUnit.MINUTES.toMilliseconds(5);
Date date2 = new Date(millis);
3

Я просто хочу отметить, что Date и Calendar обычно считаются очень плохо спроектированными. Java 8 имеет новую библиотеку даты и времени (для предыдущих версий Java используйте Joda Time, на которой была основана библиотека Java 8, или http://www.threeten.org/), используя написанную вами:

import java.time.OffsetDateTime;

...
OffsetDateTime dt = OffsetDateTime.now();
OffsetDateTime dt1 = dt.plusMinutes(5);
1

Используя Java8, вы можете увеличивать 5 минут до заданного значения Date с помощью следующего кода scala:

// because the supplied Date in your question uses this Date structure:
import java.util.Date

import java.time.Instant
import java.time.LocalDateTime
import java.time.ZoneId

// supplied date from your question
val date1 = new Date()

// convert to LocalDateTime
val ldt = LocalDateTime.ofInstant(Instant.ofEpochMilli(date1.getTime), ZoneId.systemDefault)

 // add five minutes
val incrementedBy5 = ldt.plusMinutes(5)

// convert to Long
val asLongInt: Long = incrementedBy5.atZone(ZoneId.systemDefault()).toEpochSecond

или в одной строке:

LocalDateTime.ofInstant(Instant.ofEpochMilli(date1.getTime), ZoneId.systemDefault).plusMinutes(5).atZone(ZoneId.systemDefault()).toEpochSecond
1

В java вы можете использовать Calendar для этого:

Date date1 = new Date();
Calendar c= new GregorianCalendar();
c.setTime(date1);
c.add(Calendar.MINUTE, 5);
date1 = c.getTime();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню