
package com.cloudcc.core;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class TimeUtil {
    private static final TimeZone DEFAULT_TIMEZONE = TimeZone.getDefault();
    private static final boolean isChinastandardTimeZone=true;

    public static SimpleDateFormat getSimpleDateFormat(String string, UserInfo userInfo) {
        return new SimpleDateFormat(string);
    }
    public static Date getNowDate(UserInfo userInfo) {
        return parseDate(new Date(), userInfo);
    }
    public static Date parseDate(Date date, UserInfo userInfo) {
        TimeZone userTZ = getUserTimeZone(userInfo);
        return parseDate(date, userTZ);
    }
    public static Date parseDate(Date date, TimeZone tz) {
        if (isChinastandardTimeZone) {
            if ((long)tz.getRawOffset() == 28800000L) {
                return date;
            } else {
                long offset = (long)tz.getRawOffset() - 28800000L;
                return new Date(date.getTime() + offset);
            }
        } else {
            long offset = (long)(tz.getRawOffset() - DEFAULT_TIMEZONE.getRawOffset());
            return new Date(date.getTime() + offset);
        }
    }

    public static TimeZone getUserTimeZone(UserInfo userInfo) {
        if (userInfo != null && StringUtils.isNotNullAndEmpty(userInfo.getTimeZone())) {
            String timeZoneId = userInfo.getTimeZone();
            return !timeZoneId.startsWith("+") && !timeZoneId.startsWith("-") ? TimeZone.getTimeZone(timeZoneId) : TimeZone.getTimeZone("GMT" + timeZoneId);
        } else {
            return TimeZone.getTimeZone("GMT+08:00");
        }
    }
}
