All Downloads are FREE. Search and download functionalities are using the official Maven repository.

it.amattioli.encapsulate.dates.Hour Maven / Gradle / Ivy

package it.amattioli.encapsulate.dates;

import it.amattioli.encapsulate.range.Discrete;

import java.io.Serializable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Hour extends ConventionalTimeInterval implements Discrete, Serializable, Cloneable {

	private Hour() {
		this(new Date());
	}
	
	private Hour(Calendar cal) {
		setCalendar(cal);
	}
	
	public Hour(Date date) {
		Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        setCalendar(cal);
	}
	
	public static Hour now() {
		return new Hour();
	}

	@Override
	public int compareTo(Hour o) {
		return this.getInitTime().compareTo(o.getInitTime());
	}

	@Override
	public Hour next() {
		Calendar precCal = (Calendar) getCalendar().clone();
        precCal.add(Calendar.HOUR_OF_DAY, 1);
        return new Hour(precCal);
	}

	@Override
	public Hour previous() {
		Calendar precCal = (Calendar) getCalendar().clone();
        precCal.add(Calendar.HOUR_OF_DAY, -1);
        return new Hour(precCal);
	}

	public Date getEndTime() {
        Calendar succCal = (Calendar) getCalendar().clone();
        succCal.add(Calendar.HOUR_OF_DAY, 1);
        return succCal.getTime();
    }
	
	public boolean equals(Object o) {
        if (o instanceof Hour) {
            Hour m = (Hour) o;
            return this.getInitTime().equals(m.getInitTime());
        } else {
            return false;
        }
    }

	@Override
	public Object clone() {
        return new Hour((Calendar) getCalendar().clone());
    }

    public String toString() {
        DateFormat format = new SimpleDateFormat("hh:mm dd/MM/yyyy");
        return format.format(getInitTime());
    }
    
    @Override
	public Duration getDuration() {
		return getPhysicalDuration();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy