Popular Posts
Enable SSL connection for Jsoup import org.jsoup.Connection; import org.jsoup.Jsoup; import javax.net.ssl.*; import java.io.IOException; import java.security.KeyManagement... javax.net.ssl.SSLHandshakeException: Connection closed by peer in Android 5.0 Lollipop Recently, there is a error occurs when access website via ssl connection like below although it worked fine several days ago. // Enable SSL... Tired of Hibernate? Try JDBI in your code JDBI Quick sample ICategoryDAO.java : create a data access interface (implement is not required) package com.prhythm.erotic.task.data....
Stats
DateTime
package bruce.lib;

import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
import java.util.TreeSet;

public class DateTime implements Serializable, Cloneable, Comparable<DateTime> {

    public static DateTime now() {
        return new DateTime();
    }

    public static DateTime fromDate(Date date) {
        DateTime d = new DateTime();
        d.c.setTime(date);
        return d;
    }

    public static DateTime fromTimestamp(long stamp) {
        DateTime d = new DateTime();
        d.c.setTimeInMillis(stamp);
        return d;
    }

    public static DateTime fromCalendar(Calendar c) {
        DateTime d = new DateTime();
        d.c = c;
        return d;
    }

    public static DateTime fromString(String date, String format) throws ParseException {
        DateTime d = new DateTime();
        d.c.setTime(new SimpleDateFormat(format).parse(date));
        return d;
    }

    public static DateTime fromString(String date, String format, Locale locale) throws ParseException {
        DateTime d = new DateTime();
        d.c.setTime(new SimpleDateFormat(format, locale).parse(date));
        return d;
    }

    public static DateTime latest(DateTime... dates) {
        TreeSet<DateTime> set = new TreeSet<DateTime>();
        set.addAll(Arrays.asList(dates));
        return set.last();
    }

    public static DateTime oldest(DateTime... dates) {
        TreeSet<DateTime> set = new TreeSet<DateTime>();
        set.addAll(Arrays.asList(dates));
        return set.first();
    }

    private Calendar c;

    public enum Field {
        ERA, // AD/BC
        YEAR, //
        MONTH, //
        WEEK_OF_YEAR, //
        WEEK_OF_MONTH, //
        AM_PM_MARKER, // AM/PM
        DATE, //
        DAY_OF_MONTH, //
        DAY_OF_WEEK, //
        DAY_OF_WEEK_IN_MONTH, //
        DAY_OF_YEAR, //
        HOUR, //
        MINUTE, //
        SECOND, //
        MILLISECOND, //
        TIMEZONE
    }

    public class Month {
        public static final int JANUARY = 0;
        public static final int FEBRUARY = 1;
        public static final int MARCH = 2;
        public static final int APRIL = 3;
        public static final int MAY = 4;
        public static final int JUNE = 5;
        public static final int JULY = 6;
        public static final int AUGUST = 7;
        public static final int SEPTEMBER = 8;
        public static final int OCTOBER = 9;
        public static final int NOVEMBER = 10;
        public static final int DECEMBER = 11;
        public static final int UNDECIMBER = 12;
    }

    public class Day {
        public static final int SUNDAY = 1;
        public static final int MONDAY = 2;
        public static final int TUESDAY = 3;
        public static final int WEDNESDAY = 4;
        public static final int THURSDAY = 5;
        public static final int FRIDAY = 6;
        public static final int SATURDAY = 7;
    }

    private DateTime() {
        this.c = Calendar.getInstance();
    }

    public boolean after(DateTime datetime) {
        return this.toTimeInMillis() > datetime.toTimeInMillis();
    }

    public boolean before(DateTime datetime) {
        return this.toTimeInMillis() < datetime.toTimeInMillis();
    }

    public DateTime add(Field field, int amount) {
        switch (field) {
        case YEAR:
            this.c.add(Calendar.YEAR, amount);
            return this;
        case MONTH:
            this.c.add(Calendar.MONTH, amount);
            return this;
        case WEEK_OF_YEAR:
        case WEEK_OF_MONTH:
            this.c.add(Calendar.DATE, amount * 7);
            return this;
        case DATE:
        case DAY_OF_MONTH:
        case DAY_OF_WEEK:
        case DAY_OF_WEEK_IN_MONTH:
        case DAY_OF_YEAR:
            this.c.add(Calendar.DATE, amount);
            return this;
        case MINUTE:
            this.c.add(Calendar.MINUTE, amount);
            return this;
        case SECOND:
            this.c.add(Calendar.SECOND, amount);
            return this;
        case HOUR:
            this.c.add(Calendar.HOUR, amount);
            return this;
        case MILLISECOND:
            this.c.add(Calendar.MILLISECOND, amount);
            return this;
        default:
            throw new IllegalArgumentException("Unaccepted field.");
        }
    }

    public DateTime addYear(int amount) {
        return this.add(Field.YEAR, amount);
    }

    public DateTime addMonth(int amount) {
        return this.add(Field.MONTH, amount);
    }

    public DateTime addWeek(int amount) {
        return this.add(Field.WEEK_OF_YEAR, amount);
    }

    public DateTime addDay(int amount) {
        return this.add(Field.DAY_OF_YEAR, amount);
    }

    public DateTime addMinute(int amount) {
        return this.add(Field.MINUTE, amount);
    }

    public DateTime addSecond(int amount) {
        return this.add(Field.SECOND, amount);
    }

    public DateTime addHour(int amount) {
        return this.add(Field.HOUR, amount);
    }

    public DateTime addMilliSecond(int amount) {
        return this.add(Field.MILLISECOND, amount);
    }

    public DateTime set(Field field, int value) {
        switch (field) {
        // case ERA:
        case YEAR:
            this.c.set(Calendar.YEAR, value);
            return this;
        case MONTH:
            this.c.set(Calendar.MONTH, value);
            return this;
            // case WEEK_OF_YEAR:
            // case WEEK_OF_MONTH:
            // case AM_PM_MARKER:
        case DATE:
            this.c.set(Calendar.DATE, value);
            return this;
            // case DAY_OF_MONTH:
            // case DAY_OF_WEEK:
            // case DAY_OF_WEEK_IN_MONTH:
            // case DAY_OF_YEAR:
        case HOUR:
            this.c.set(Calendar.HOUR, value);
            return this;
        case MINUTE:
            this.c.set(Calendar.MINUTE, value);
            return this;
        case SECOND:
            this.c.set(Calendar.SECOND, value);
            return this;
        case MILLISECOND:
            this.c.set(Calendar.MILLISECOND, value);
            return this;
            // case TIMEZONE:
        default:
            throw new IllegalArgumentException("Unaccepted field.");
        }
    }

    public DateTime setYear(int value) {
        return this.set(Field.YEAR, value);
    }

    public DateTime setMonth(int value) {
        return this.set(Field.MONTH, value);
    }

    public DateTime setDate(int value) {
        return this.set(Field.DATE, value);
    }

    public DateTime setHour(int value) {
        return this.set(Field.HOUR, value);
    }

    public DateTime setMinute(int value) {
        return this.set(Field.MINUTE, value);
    }

    public DateTime setSecond(int value) {
        return this.set(Field.SECOND, value);
    }

    public DateTime setMilliSecond(int value) {
        return this.set(Field.MILLISECOND, value);
    }

    public int get(Field field) {
        switch (field) {
        case YEAR:
            return this.c.get(Calendar.YEAR);
        case MONTH:
            return this.c.get(Calendar.MONTH);
        case WEEK_OF_YEAR:
            return this.c.get(Calendar.WEEK_OF_YEAR);
        case WEEK_OF_MONTH:
            return this.c.get(Calendar.WEEK_OF_MONTH);
        case DATE:
            return this.c.get(Calendar.DATE);
        case DAY_OF_MONTH:
            return this.c.get(Calendar.DAY_OF_MONTH);
        case DAY_OF_WEEK:
            return this.c.get(Calendar.DAY_OF_WEEK);
        case DAY_OF_WEEK_IN_MONTH:
            return this.c.get(Calendar.DAY_OF_WEEK_IN_MONTH);
        case DAY_OF_YEAR:
            return this.c.get(Calendar.DAY_OF_YEAR);
        case MINUTE:
            return this.c.get(Calendar.MINUTE);
        case SECOND:
            return this.c.get(Calendar.SECOND);
        case HOUR:
            return this.c.get(Calendar.HOUR);
        case MILLISECOND:
            return this.c.get(Calendar.MILLISECOND);
        default:
            throw new IllegalArgumentException("Unaccepted field.");
        }
    }

    public int getYear() {
        return this.get(Field.YEAR);
    }

    public int getMonth() {
        return this.get(Field.MONTH);
    }

    public int getWeekOfYear() {
        return this.get(Field.WEEK_OF_YEAR);
    }

    public int getWeekOfMonth() {
        return this.get(Field.WEEK_OF_MONTH);
    }

    public int getDate() {
        return this.get(Field.DATE);
    }

    public int getDayOfMonth() {
        return this.get(Field.DAY_OF_MONTH);
    }

    public int getDayOfWeek() {
        return this.get(Field.DAY_OF_WEEK);
    }

    public int getDayOfWeekInMonth() {
        return this.get(Field.DAY_OF_WEEK_IN_MONTH);
    }

    public int getDayOfYear() {
        return this.get(Field.DAY_OF_YEAR);
    }

    public int getHour() {
        return this.get(Field.HOUR);
    }

    public int getMinute() {
        return this.get(Field.MINUTE);
    }

    public int getSecond() {
        return this.get(Field.SECOND);
    }

    public int getMilliSecond() {
        return this.get(Field.MILLISECOND);
    }

    public TimeZone getTimeZone() {
        return this.c.getTimeZone();
    }

    public DateTime setTimeZone(TimeZone zone) {
        this.c.setTimeZone(zone);
        return this;
    }

    public long toTimeInMillis() {
        return this.c.getTimeInMillis();
    }

    public Date toDate() {
        return this.c.getTime();
    }

    public Calendar toCalendar() {
        return this.c;
    }

    @Override
    public String toString() {
        return this.c.getTime().toString();
    }

    public String toString(String format) {
        SimpleDateFormat f = new SimpleDateFormat(format);
        return f.format(this.c.getTime());
    }

    public String toString(String format, Locale locale) {
        SimpleDateFormat f = new SimpleDateFormat(format, locale);
        return f.format(this.c.getTime());
    }

    @Override
    public int hashCode() {
        return c.getTime().hashCode();
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        DateTime other = (DateTime) obj;
        return this.c.getTimeInMillis() == other.toTimeInMillis();
    }

    @Override
    public int compareTo(DateTime o) {
        return (int) (this.toTimeInMillis() - o.toTimeInMillis());
    }

}