2015-01-28 5 views
0

Каков наилучший способ вычесть 5 минут от заданной даты?Вычитание 5 минут с даты эпохи

public long fiveMinutesAgo(String epochDate) { 
//ToDo 
return fiveMinBack; 
} 
+3

Ваш ввод «Строка» - какой формат? Вы должны разделить задачи на синтаксический анализ, затем арифметику. Кто из них дает вам проблемы? –

ответ

1

эпохальная дата должна быть датой. Используйте календарь:

Calendar calendar = Calendar.getInstance(); 
    calendar.setTime(epochDate); 
    calendar.add(Calendar.MINUTE, -5); 
    Date result = calendar.getTime(); 
0

Вот тело для метода:

private static final long FIVE_MINS_IN_MILLIS = 5 * 60 * 1000; 

public long fiveMinutesAgo(String epochDate) throws ParseException { 
    DateFormat df = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss"); 
    long time = df.parse(epochDate).getTime(); 
    return time - FIVE_MINS_IN_MILLIS; 
} 

Время в Millis-так-в-эпоху, так чтобы выяснить, за пять минут, прежде чем вы должны просто вычесть 5 мин в миллисекундах (5 * 60 * 1000).

Я бы предложил переименовать метод: fiveMinutesBefore() и, возможно, разбил его на два метода: один для разбора строк дат в разы, а другой для вычитания минут от времени.

Возможно, вы также можете использовать Joda-Time, поскольку он намного лучше разработан (и потокобезопасен), чем стандартный пакет дат Java.

0

Вы можете вычесть 5 минуты эквивалента miiliseconds от даты вы получаете: -

//convert input string epochDate to Date object based on the format 
long ms=date.getTime(); 
Date updatedDate=new Date(ms - (5 * 60000)); //60000 is 1 minute equivalent in milliseconds 
return updatedDate.getTime(); 
0

Вы можете использовать любого из указанных выше способов другого пользователя, но если интересно дать попробовать на

Java 8 Дата и время API

public void subtract_minutes_from_date_in_java8() 
{ 
    LocalDateTime newYearsDay = LocalDateTime.of(2015, Month.JANUARY, 1, 0, 0); 

LocalDateTime newYearsEve = newYearsDay.minusMinutes(1);// In your case use 5 here 

    java.time.format.DateTimeFormatter formatter =java.time.format.DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss S"); 

    logger.info(newYearsDay.format(formatter)); 

    logger.info(newYearsEve.format(formatter)); 
} 

Выход:

01/01/2015 00:00:00 CST 
12/31/2014 23:59:00 CST 

Класс LocalDateTime непреложный дата-время объект присутствует в java.time пакет в Java 8, который представляет собой дату и время, часто рассматривается как год-месяц-день-час-минута -Втора.

Ниже приведен синтаксис of() используемого метода:

static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute) 

который получает экземпляр LocalDateTime из год, месяц, день, час и минуту, установив второй и наносекунды к нулю.

Смежные вопросы