DefaultTimeZone.java

package top.infra.jackson2;

import static org.joda.time.format.DateTimeFormat.forPattern;

import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.Minutes;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

import java.util.TimeZone;

/**
 * Created by zhanghaolun on 16/6/20.
 */
public abstract class DefaultTimeZone {

    public static final String CRON_EVERY_30_SECONDS = "0/30 * * * * ?";

    public static final DateTimeZone DEFAULT_DATE_TIME_ZONE = DateTimeZone.getDefault();
    public static final TimeZone DEFAULT_TIME_ZONE = DEFAULT_DATE_TIME_ZONE.toTimeZone();
    public static final DateTime EPOCH = new DateTime(0L, DEFAULT_DATE_TIME_ZONE);

    /**
     * see: http://stackoverflow.com/questions/15245307/java-simpledateformat-timezone-offset-with-minute-separated-by-colon
     * You can get the timezone offset formatted like +08:00
     * with the SimpleDateFormat in Java 7 (yyyy-MM-dd'T'HH:mm:ss.SSSXXX)
     * with the Joda's DateTimeFormat (yyyy-MM-dd'T'HH:mm:ss.SSSZZ)
     */
    public static final String PATTERN_JAVA_ISO8601 = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX";
    //public static final String PATTERN_JODA_ISO8601 = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
    public static final String PATTERN_JODA_ISO8601 = "yyyy-MM-dd'T'HH:mm:ss.SSSZZ";

    public static final DateTimeFormatter yyyyMMdd_HHmmss;
    public static final DateTimeFormatter ISO8601;

    static {
        yyyyMMdd_HHmmss = forPattern("yyyyMMdd-HH:mm:ss").withZone(DEFAULT_DATE_TIME_ZONE);
        ISO8601 = DateTimeFormat.forPattern(PATTERN_JODA_ISO8601).withZone(DEFAULT_DATE_TIME_ZONE);
    }

    private DefaultTimeZone() {
    }

    public static DateTime now() {
        return DateTime.now(DEFAULT_DATE_TIME_ZONE);
    }

    public static Integer minutesSinceEpoch(final DateTime dateTime) {
        return Minutes.minutesBetween(EPOCH, dateTime).getMinutes();
    }
}