从纪元日期减去5分钟

时间:2015-01-28 10:30:54

标签: java epoch

从给定的纪元日期减去5分钟的最佳方法是什么?

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

4 个答案:

答案 0 :(得分:2)

epochDate必须是日期。使用日历:

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

答案 1 :(得分: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;
}

时间是从那个时代起的毫秒,所以要在五分钟之前找出你需要减去5分钟(毫秒)(5 * 60 * 1000)。

我建议将方法重命名为:fiveMinutesBefore()并将其分解为两种方法:一种用于将字符串日期解析为时间,另一种用于从时间中减去分钟。

您可能还会考虑使用Joda-Time,因为它比标准Java日期包更好地设计(和线程更安全)。

答案 2 :(得分:0)

你可以从你得到的日期减去5分钟相当于毫秒: -

//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();

答案 3 :(得分: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的实例,将第二个和纳秒设置为零。