utilities.time.DateAndTimes.java Source code

Java tutorial

Introduction

Here is the source code for utilities.time.DateAndTimes.java

Source

/*
* Copyright (C) 2014 www.StarNub.org - Underbalanced
*
* This utilities.file is part of org.starnub a Java Wrapper for Starbound.
*
* This above mentioned StarNub software 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
* any later version. This above mentioned CodeHome software
* 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 in
* this StarNub Software.  If not, see <http://www.gnu.org/licenses/>.
*/

package utilities.time;

import org.joda.time.DateTime;
import org.joda.time.Period;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.PeriodFormatter;
import org.joda.time.format.PeriodFormatterBuilder;

/**
 * Represents DataAndTimes instance. This will provide formatting support and time calculations
 *
 * @author Daniel (Underbalanced) (www.StarNub.org)
 * @since 1.0
 */
public class DateAndTimes {

    /**
     * Represents the only instance of this class - Singleton Pattern
     */
    private static final DateAndTimes instance = new DateAndTimes();

    /**
     * This constructor is private - Singleton Pattern
     */
    private DateAndTimes() {
    }

    /**
     *
     * @return DateAndTimes Singleton Instance
     */
    public static DateAndTimes getInstance() {
        return instance;
    }

    /**
     * Returns a String formatted date, Examples "MMMM dd, yyyy",  "MMMM dd, yyyy '@' HH:mm '- Server Time'", [HH:mm:ss]
     * <p>
     * @see <a href="http://www.joda.org/joda-time/key_format.html">Joda Time Formatting</a>
     * <p>
     * @param format String representing the format
     * @return String with the current time formatted
     */
    public static String getFormattedTimeNow(String format) {
        return DateTime.now().toString(DateTimeFormat.forPattern(format));
    }

    /**
     * Returns a String formatted date, Examples "MMMM dd, yyyy",  "MMMM dd, yyyy '@' HH:mm '- Server Time'", [HH:mm:ss]
     * <p>
     * @see <a href="http://www.joda.org/joda-time/key_format.html">Joda Time Formatting</a>
     * <p>
     * @param format String representing the format
     * @param dateTime DateTime representing the time
     * @return String with the future time
     */
    public static String getFormattedDate(String format, DateTime dateTime) {
        DateTimeFormatter fmt = DateTimeFormat.forPattern(format);
        return fmt.print(dateTime);
    }

    /**
     * Returns a period which represents the distance between two times
     *
     * @param dateTime1 DateTime representing the first date and time
     * @param dateTime2 DateTime representing the second date and time
     * @return Period representing that distance in time
     */
    public Period getPeriod(DateTime dateTime1, DateTime dateTime2) {
        return new Period(dateTime1, dateTime2);
    }

    /**
     *
     * This will calculate out and return a String the length of a period in easy to read format: Y
     *
     * @param duration
     * @param yearsSeparatorFormat
     * @param monthsSeparatorFormat
     * @param weeksSeparatorFormat
     * @param daysSeparatorFormat
     * @param hoursSeparatorFormat
     * @param minutesSeparatorFormat
     * @param secondsSeparatorFormat
     * @return
     */
    public static String getPeriodFormattedFromMilliseconds(long duration, String yearsSeparatorFormat,
            String monthsSeparatorFormat, String weeksSeparatorFormat, String daysSeparatorFormat,
            String hoursSeparatorFormat, String minutesSeparatorFormat, String secondsSeparatorFormat) {
        Period period = new Period(duration);
        if (period.getYears() > 0) {
            return getPeriodFormat(period, yearsSeparatorFormat, monthsSeparatorFormat, weeksSeparatorFormat,
                    daysSeparatorFormat, hoursSeparatorFormat, minutesSeparatorFormat, secondsSeparatorFormat);
        } else if (period.getMonths() > 0) {
            return getPeriodFormat(period, monthsSeparatorFormat, weeksSeparatorFormat, daysSeparatorFormat,
                    hoursSeparatorFormat, minutesSeparatorFormat, secondsSeparatorFormat);
        } else if (period.getWeeks() > 0) {
            return getPeriodFormat(period, weeksSeparatorFormat, daysSeparatorFormat, hoursSeparatorFormat,
                    minutesSeparatorFormat, secondsSeparatorFormat);
        } else if (period.getDays() > 0) {
            return getPeriodFormat(period, daysSeparatorFormat, hoursSeparatorFormat, minutesSeparatorFormat,
                    secondsSeparatorFormat);
        } else if (period.getHours() > 0) {
            return getPeriodFormat(period, hoursSeparatorFormat, minutesSeparatorFormat, secondsSeparatorFormat);
        } else if (period.getMinutes() > 0) {
            return getPeriodFormat(period, minutesSeparatorFormat, secondsSeparatorFormat);
        } else if (period.getSeconds() > 0) {
            return getPeriodFormat(period, secondsSeparatorFormat);
        } else {
            return null;
        }
    }

    /**
     *
     * @param period
     * @param secondsSeparatorFormat
     * @return
     */
    public static String getPeriodFormat(Period period, String secondsSeparatorFormat) {
        if (secondsSeparatorFormat == null) {
            secondsSeparatorFormat = "-";
        }
        PeriodFormatter Formatter = new PeriodFormatterBuilder().printZeroAlways().minimumPrintedDigits(2)
                .appendSeconds().appendLiteral(secondsSeparatorFormat).toFormatter();
        return Formatter.print(period);

    }

    /**
     *
     * @param period
     * @param minutesSeparatorFormat
     * @param secondsSeparatorFormat
     * @return
     */
    public static String getPeriodFormat(Period period, String minutesSeparatorFormat,
            String secondsSeparatorFormat) {
        if (secondsSeparatorFormat == null) {
            secondsSeparatorFormat = "-";
        }
        PeriodFormatter Formatter = new PeriodFormatterBuilder().printZeroAlways().minimumPrintedDigits(2)
                .appendMinutes().appendSeparator(minutesSeparatorFormat).appendSeconds()
                .appendLiteral(secondsSeparatorFormat).toFormatter();
        return Formatter.print(period);
    }

    /**
     *
     * @param period
     * @param hoursSeparatorFormat
     * @param minutesSeparatorFormat
     * @param secondsSeparatorFormat
     * @return
     */
    public static String getPeriodFormat(Period period, String hoursSeparatorFormat, String minutesSeparatorFormat,
            String secondsSeparatorFormat) {
        if (secondsSeparatorFormat == null) {
            secondsSeparatorFormat = "-";
        }
        PeriodFormatter Formatter = new PeriodFormatterBuilder().printZeroAlways().minimumPrintedDigits(2)
                .appendHours().appendSeparator(hoursSeparatorFormat).appendMinutes()
                .appendSeparator(minutesSeparatorFormat).appendSeconds().appendLiteral(secondsSeparatorFormat)
                .toFormatter();
        return Formatter.print(period);
    }

    /**
     *
     * @param period
     * @param daysSeparatorFormat
     * @param hoursSeparatorFormat
     * @param minutesSeparatorFormat
     * @param secondsSeparatorFormat
     * @return
     */
    public static String getPeriodFormat(Period period, String daysSeparatorFormat, String hoursSeparatorFormat,
            String minutesSeparatorFormat, String secondsSeparatorFormat) {
        if (secondsSeparatorFormat == null) {
            secondsSeparatorFormat = "-";
        }
        PeriodFormatter Formatter = new PeriodFormatterBuilder().printZeroAlways().minimumPrintedDigits(2)
                .appendDays().appendSeparator(daysSeparatorFormat).appendHours()
                .appendSeparator(hoursSeparatorFormat).appendMinutes().appendSeparator(minutesSeparatorFormat)
                .appendSeconds().appendLiteral(secondsSeparatorFormat).toFormatter();
        return Formatter.print(period);
    }

    /**
     *
     * @param period
     * @param weeksSeparatorFormat
     * @param daysSeparatorFormat
     * @param hoursSeparatorFormat
     * @param minutesSeparatorFormat
     * @param secondsSeparatorFormat
     * @return
     */
    public static String getPeriodFormat(Period period, String weeksSeparatorFormat, String daysSeparatorFormat,
            String hoursSeparatorFormat, String minutesSeparatorFormat, String secondsSeparatorFormat) {
        if (secondsSeparatorFormat == null) {
            secondsSeparatorFormat = "-";
        }
        PeriodFormatter Formatter = new PeriodFormatterBuilder().printZeroAlways().minimumPrintedDigits(2)
                .appendWeeks().appendSeparator(weeksSeparatorFormat).appendDays()
                .appendSeparator(daysSeparatorFormat).appendHours().appendSeparator(hoursSeparatorFormat)
                .appendMinutes().appendSeparator(minutesSeparatorFormat).appendSeconds()
                .appendLiteral(secondsSeparatorFormat).toFormatter();
        return Formatter.print(period);
    }

    /**
     *
     * @param period
     * @param monthsSeparatorFormat
     * @param weeksSeparatorFormat
     * @param daysSeparatorFormat
     * @param hoursSeparatorFormat
     * @param minutesSeparatorFormat
     * @param secondsSeparatorFormat
     * @return
     */
    public static String getPeriodFormat(Period period, String monthsSeparatorFormat, String weeksSeparatorFormat,
            String daysSeparatorFormat, String hoursSeparatorFormat, String minutesSeparatorFormat,
            String secondsSeparatorFormat) {
        if (secondsSeparatorFormat == null) {
            secondsSeparatorFormat = "-";
        }
        PeriodFormatter Formatter = new PeriodFormatterBuilder().printZeroAlways().minimumPrintedDigits(2)
                .appendMonths().appendSeparator(monthsSeparatorFormat).appendWeeks()
                .appendSeparator(weeksSeparatorFormat).appendDays().appendSeparator(daysSeparatorFormat)
                .appendHours().appendSeparator(hoursSeparatorFormat).appendMinutes()
                .appendSeparator(minutesSeparatorFormat).appendSeconds().appendLiteral(secondsSeparatorFormat)
                .toFormatter();
        return Formatter.print(period);
    }

    /**
     *
     * @param period
     * @param yearsSeparatorFormat
     * @param monthsSeparatorFormat
     * @param weeksSeparatorFormat
     * @param daysSeparatorFormat
     * @param hoursSeparatorFormat
     * @param minutesSeparatorFormat
     * @param secondsSeparatorFormat
     * @return
     */
    public static String getPeriodFormat(Period period, String yearsSeparatorFormat, String monthsSeparatorFormat,
            String weeksSeparatorFormat, String daysSeparatorFormat, String hoursSeparatorFormat,
            String minutesSeparatorFormat, String secondsSeparatorFormat) {
        if (secondsSeparatorFormat == null) {
            secondsSeparatorFormat = "-";
        }
        PeriodFormatter Formatter = new PeriodFormatterBuilder().printZeroAlways().minimumPrintedDigits(2)
                .appendYears().appendSeparator(yearsSeparatorFormat).appendMonths()
                .appendSeparator(monthsSeparatorFormat).appendWeeks().appendSeparator(weeksSeparatorFormat)
                .appendDays().appendSeparator(daysSeparatorFormat).appendHours()
                .appendSeparator(hoursSeparatorFormat).appendMinutes().appendSeparator(minutesSeparatorFormat)
                .appendSeconds().appendLiteral(secondsSeparatorFormat).toFormatter();
        return Formatter.print(period);
    }

    /**
     *
     * @param minutes
     * @return
     */
    public static DateTime getFutureDateTime(int minutes) {
        return new DateTime().plusMinutes(minutes);
    }

    /**
     *
     * @param hours
     * @param minutes
     * @return
     */
    public static DateTime getFutureDateTime(int hours, int minutes) {
        return new DateTime().plusHours(hours).plusMinutes(minutes);
    }

    /**
     *
     * @param days
     * @param hours
     * @param minutes
     * @return
     */
    public static DateTime getFutureDateTime(int days, int hours, int minutes) {
        return new DateTime().plusDays(days).plusHours(hours).plusMinutes(minutes);
    }

    /**
     *
     * @param months
     * @param days
     * @param hours
     * @param minutes
     * @return
     */
    public static DateTime getFutureDateTime(int months, int days, int hours, int minutes) {
        return new DateTime().plusMonths(months).plusDays(days).plusHours(hours).plusMinutes(minutes);
    }

    /**
     *
     * @param years
     * @param months
     * @param days
     * @param hours
     * @param minutes
     * @return
     */
    public static DateTime getFutureDateTime(int years, int months, int days, int hours, int minutes) {
        return new DateTime().plusYears(years).plusMonths(months).plusDays(days).plusHours(hours)
                .plusMinutes(minutes);
    }

}