时间、时区、时间格式转换的工具类

【转载请注明出处:From李诗雨—http://blog.csdn.net/cjm2484836553/article/details/77972656

不诗意的女程序猿不是好厨师~

public class DateConvertUtil {
    /**
     * 获取北京时区
     * @return
     */
    public static TimeZone getBeijingTimeZone(){
        return TimeZone.getTimeZone("GMT+8:00");
    }


    /**
     * 获取当前手机对应的系统时区
     * */
    public static TimeZone getPhoneTimeZone()
    {
        return TimeZone.getDefault();
    }

    /**
     * 以“GMT+8:00”形式返回当前系统对应的时区
     * @return
     */
    public static String getCurrentTimeZoneStr()
    {
        TimeZone tz = TimeZone.getDefault();
        return createGmtOffsetString(true,true,tz.getRawOffset());
    }

    public static String createGmtOffsetString(boolean includeGmt,
                                               boolean includeMinuteSeparator, int offsetMillis) {
        int offsetMinutes = offsetMillis / 60000;
        char sign = '+';
        if (offsetMinutes < 0) {
            sign = '-';
            offsetMinutes = -offsetMinutes;
        }
        StringBuilder builder = new StringBuilder(9);
        if (includeGmt) {
            builder.append("GMT");
        }
        builder.append(sign);
        appendNumber(builder, 2, offsetMinutes / 60);
        if (includeMinuteSeparator) {
            builder.append(':');
        }
        appendNumber(builder, 2, offsetMinutes % 60);
        return builder.toString();
    }

    private static void appendNumber(StringBuilder builder, int count, int value) {
        String string = Integer.toString(value);
        for (int i = 0; i < count - string.length(); i++) {
            builder.append('0');
        }
        builder.append(string);
    }


    /** 格式化日期的标准字符串 */
    public final static String Detail_Format = "yyyy-MM-dd HH:mm:ss";
    //  private final static String Simple_Format="yyyy-MM-dd";


    /**
     * 将日期字符串转换为Date对象
     * @param date 日期字符串,必须为"yyyy-MM-dd HH:mm:ss"
     * @param format 格式化字符串
     * @return 日期字符串的Date对象表达形式
     * */
    public static Date parseToDate(String date, String format)
    {
        Date dt = null;
        SimpleDateFormat dateFormat = new SimpleDateFormat(format);
        try
        {
            dt = dateFormat.parse(date);
        }
        catch(ParseException e)
        {
            e.printStackTrace();
        }

        return dt;
    }


    /**
     * 将date----->String
     * 将Date对象转换为指定格式的字符串
     * @param date Date对象
     * @param //String format 格式化字符串
     * @return Date对象的字符串表达形式
     * */
    public static String formatDateToStr(Date date, String format)
    {
        SimpleDateFormat dateFormat = new SimpleDateFormat(format);
        return dateFormat.format(date);
    }


    /**
     * 获取更改时区后的时间
     * @param date 时间
     * @param oldZone 旧时区
     * @param newZone 新时区
     * @return 时间
     */
    public static Date changeTimeZone(Date date, TimeZone oldZone, TimeZone newZone)
    {
        Date dateTmp = null;
        if (date != null)
        {
            int timeOffset = oldZone.getRawOffset() - newZone.getRawOffset();
            dateTmp = new Date(date.getTime() - timeOffset);
        }
        return dateTmp;
    }


    /**
     * 将北京时区的时间转化为当前系统对应时区的时间
     * @param beijingTime
     * @param format
     * @return
     */
    public static String beijingTime2PhoneTime(String beijingTime,String format){
        Date beijingDate = parseToDate(beijingTime, format);
        Date phoneDate = changeTimeZone(beijingDate, getBeijingTimeZone(), getPhoneTimeZone());
        String phoneTime= formatDateToStr(phoneDate,format);
        return phoneTime;
    }

    /**
     * 将本地系统对应时区的时间转换为上北京时区对应的时间
     * @param phoneTime
     * @return
     */
    public static String phoneTime2BeijingTime(String phoneTime){
        Date phoneDate = parseToDate(phoneTime, Detail_Format);
        Date beijingDate = changeTimeZone(phoneDate,getPhoneTimeZone(), getBeijingTimeZone());
        String beijingTime= formatDateToStr(beijingDate,Detail_Format);
        return beijingTime;
    }

}

积累点滴,做好自己~

猜你喜欢

转载自blog.csdn.net/cjm2484836553/article/details/77972656
今日推荐