/* * Copyright (C) 2014, David Verhaak * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package edu.atlas.games.util; import java.util.concurrent.TimeUnit; /** * * @todo Write documentation * @author David Verhaak <david@forcez.nl> * @since 0.2 */ public class TimeSpan { private int days; private int hours; private int minutes; private int seconds; private long milliseconds; /** * * @todo Write documentation * @param milliseconds * @since 0.2 */ public TimeSpan(long milliseconds) { this.days = (int) TimeUnit.MILLISECONDS.toDays(milliseconds); milliseconds -= TimeUnit.DAYS.toMillis(days); this.hours = (int) TimeUnit.MILLISECONDS.toHours(milliseconds); milliseconds -= TimeUnit.HOURS.toMillis(hours); this.minutes = (int) TimeUnit.MILLISECONDS.toMinutes(milliseconds); milliseconds -= TimeUnit.MINUTES.toMillis(minutes); this.seconds = (int) TimeUnit.MILLISECONDS.toSeconds(milliseconds); milliseconds -= TimeUnit.SECONDS.toMillis(seconds); this.milliseconds = milliseconds; } /** * * @todo Write documentation * @param hours * @param minutes * @param seconds * @since 0.2 */ public TimeSpan(int hours, int minutes, int seconds) { this(hours, minutes, seconds, 0, 0); } /** * * @todo Write documentation * @param days * @param hours * @param minutes * @param seconds * @since 0.2 */ public TimeSpan(int days, int hours, int minutes, int seconds) { this(days, hours, minutes, seconds, 0); } /** * * @todo Write documentation * @param days * @param hours * @param minutes * @param seconds * @param milliseconds * @since 0.2 */ public TimeSpan(int days, int hours, int minutes, int seconds, long milliseconds) { this.days = days; this.hours = hours; this.minutes = minutes; this.seconds = seconds; this.milliseconds = milliseconds; } /** * * @todo Write documentation * @return * @since 0.2 */ public int getDays() { return days; } /** * * @todo Write documentation * @param days * @since 0.2 */ public void setDays(int days) { this.days = days; } /** * * @todo Write documentation * @return * @since 0.2 */ public int getHours() { return hours; } /** * * @todo Write documentation * @param hours * @since 0.2 */ public void setHours(int hours) { this.hours = hours; } /** * * @todo Write documentation * @return * @since 0.2 */ public int getMinutes() { return minutes; } /** * * @todo Write documentation * @param minutes * @since 0.2 */ public void setMinutes(int minutes) { this.minutes = minutes; } /** * * @todo Write documentation * @return * @since 0.2 */ public int getSeconds() { return seconds; } /** * * @todo Write documentation * @param seconds * @since 0.2 */ public void setSeconds(int seconds) { this.seconds = seconds; } /** * * @todo Write documentation * @return * @since 0.2 */ public long getMilliseconds() { return milliseconds; } /** * * @todo Write documentation * @param milliseconds * @since 0.2 */ public void setMilliseconds(long milliseconds) { this.milliseconds = milliseconds; } /** * * @todo Write documentation * @return * @since 0.2 */ public long getTotalMilliseconds() { return (((days * 24 + hours) * 60 + minutes) * 60 + seconds) * 1000 + milliseconds; } /** * * @todo Write documentation * @return * @since 0.2 */ public float getTotalSeconds() { return ((days * 24 + hours) * 60 + minutes) * 60 + seconds + (milliseconds / 1000); } /** * * @todo Write documentation * @return * @since 0.2 */ public float getTotalMinutes() { return (days * 24 + hours) * 60 + minutes + (seconds + (milliseconds / 1000) / 60); } /** * * @todo Write documentation * @return * @since 0.2 */ public float getTotalHours() { return days * 24 + hours + (minutes + (seconds + (milliseconds / 1000) / 60) / 60); } /** * * @todo Write documentation * @return * @since 0.2 */ public float getTotalDays() { return days + (hours + (minutes + (seconds + (milliseconds / 1000) / 60) / 60) / 24); } /** * * @todo Write documentation * @return * @since 0.2 */ @Override public String toString() { return "TimeSpan{" + "days=" + days + ", hours=" + hours + ", minutes=" + minutes + ", seconds=" + seconds + ", milliseconds=" + milliseconds + '}'; } }