How to add minutes to my Date

后端 未结 12 1262
长发绾君心
长发绾君心 2020-11-30 22:11

I have this date object:

SimpleDateFormat df = new SimpleDateFormat(\"yyyy-mm-dd HH:mm\");
Date d1 = df.parse(interviewList.get(37).getTime());
相关标签:
12条回答
  • 2020-11-30 22:33

    Once you have you date parsed, I use this utility function to add hours, minutes or seconds:

    public class DateTimeUtils {
        private static final long ONE_HOUR_IN_MS = 3600000;
        private static final long ONE_MIN_IN_MS = 60000;
        private static final long ONE_SEC_IN_MS = 1000;
    
        public static Date sumTimeToDate(Date date, int hours, int mins, int secs) {
            long hoursToAddInMs = hours * ONE_HOUR_IN_MS;
            long minsToAddInMs = mins * ONE_MIN_IN_MS;
            long secsToAddInMs = secs * ONE_SEC_IN_MS;
            return new Date(date.getTime() + hoursToAddInMs + minsToAddInMs + secsToAddInMs);
        }
    }
    

    Be careful when adding long periods of time, 1 day is not always 24 hours (daylight savings-type adjustments, leap seconds and so on), Calendar is recommended for that.

    0 讨论(0)
  • 2020-11-30 22:34

    you can use DateUtils class in org.apache.commons.lang3.time package

    int addMinuteTime = 5;
    Date targetTime = new Date(); //now
    targetTime = DateUtils.addMinutes(targetTime, addMinuteTime); //add minute
    
    0 讨论(0)
  • 2020-11-30 22:34

    In order to avoid any dependency you can use java.util.Calendar as follow:

        Calendar now = Calendar.getInstance();
        now.add(Calendar.MINUTE, 10);
        Date teenMinutesFromNow = now.getTime();
    

    In Java 8 we have new API:

        LocalDateTime dateTime = LocalDateTime.now().plus(Duration.of(10, ChronoUnit.MINUTES));
        Date tmfn = Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());
    
    0 讨论(0)
  • 2020-11-30 22:34

    This is incorrectly specified:

    SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd HH:mm");
    

    You're using minutes instead of month (MM)

    0 讨论(0)
  • 2020-11-30 22:36

    The issue for you is that you are using mm. You should use MM. MM is for month and mm is for minutes. Try with yyyy-MM-dd HH:mm

    Other approach:

    It can be as simple as this (other option is to use joda-time)

    static final long ONE_MINUTE_IN_MILLIS=60000;//millisecs
    
    Calendar date = Calendar.getInstance();
    long t= date.getTimeInMillis();
    Date afterAddingTenMins=new Date(t + (10 * ONE_MINUTE_IN_MILLIS));
    
    0 讨论(0)
  • 2020-11-30 22:39

    Convenience method for implementing @Pangea's answer:

    /*
    *  Convenience method to add a specified number of minutes to a Date object
    *  From: http://stackoverflow.com/questions/9043981/how-to-add-minutes-to-my-date
    *  @param  minutes  The number of minutes to add
    *  @param  beforeTime  The time that will have minutes added to it
    *  @return  A date object with the specified number of minutes added to it 
    */
    private static Date addMinutesToDate(int minutes, Date beforeTime){
        final long ONE_MINUTE_IN_MILLIS = 60000;//millisecs
    
        long curTimeInMs = beforeTime.getTime();
        Date afterAddingMins = new Date(curTimeInMs + (minutes * ONE_MINUTE_IN_MILLIS));
        return afterAddingMins;
    }
    
    0 讨论(0)
提交回复
热议问题