Date 與 String 的轉換

Posted by Bruce Tsai

狀況:開發人員各自設定 DateFormat

SimpleDateFormat dateFormat = 
    new SimpleDateFormat("yyyy/MM/dd");
Date dueDate = dateFormat.parse(dueDateString);

正確做法:統一用 utililty 或共用工具處理

  • 使用一個DateUtil進行轉換的處理,主要會有以下的接口
    • DateUtil.format(date);
    • DateUtil.format(date,format);
    • DateUtil.format(date,format,locale);
    • DateUtil.parse(strDate);
    • DateUtil.parse(strDate,format);
    • DateUtil.parse(strDate,format,locale);
public final class DateTimeUtil {

    /**
     * 解析日期文字
     *
     * @param date 時間字串
     * @return
     * @throws ParseException
     */
    public static Date parse(String date) throws ParseException {
        return parse(
            date,
            DateFormat.DEFAULT,
            Locale.getDefault()
        );
    }

    /**
     * 解析日期文字
     *
     * @param date   時間字串
     * @param format 日期格式
     * @return
     * @throws ParseException
     */
    public static Date parse(String date, int format)
        throws ParseException {
        return parse(date, format, Locale.getDefault());
    }

    /**
     * 解析日期文字
     *
     * @param date   時間字串
     * @param format 日期格式
     * @param locale 語系
     * @return
     * @throws ParseException
     */
    public static Date parse(
        String date,
        int format,
        Locale locale) throws ParseException {
        DateFormat formatter =
            DateFormat.getDateInstance(format, locale);
        return formatter.parse(date);
    }

    /**
     * 解析日期文字
     *
     * @param date   時間字串
     * @param format 日期格式
     * @return
     * @throws ParseException
     */
    public static Date parse(String date, String format)
        throws ParseException {
        return parse(date, format, Locale.getDefault());
    }

    /**
     * 解析日期文字
     *
     * @param date   時間字串
     * @param format 日期格式
     * @param locale 語系
     * @return
     * @throws ParseException
     */
    public static Date parse(
        String date,
        String format,
        Locale locale) throws ParseException {
        DateFormat formatter =
            new SimpleDateFormat(format, locale);
        return formatter.parse(date);
    }

    /**
     * 格式化日期
     *
     * @param date 時間
     * @return
     * @throws ParseException
     */
    public static String format(Date date) throws ParseException {
        return format(
            date,
            DateFormat.DEFAULT,
            Locale.getDefault()
        );
    }

    /**
     * 格式化日期
     *
     * @param date   時間
     * @param format 日期格式
     * @return
     * @throws ParseException
     */
    public static String format(Date date, int format)
        throws ParseException {
        return format(date, format, Locale.getDefault());
    }

    /**
     * 格式化日期
     *
     * @param date   時間
     * @param format 日期格式
     * @param locale 語系
     * @return
     * @throws ParseException
     */
    public static String format(
        Date date, int format, Locale locale)
        throws ParseException {
        DateFormat formatter =
            DateFormat.getDateInstance(format, locale);
        return formatter.format(date);
    }

    /**
     * 格式化日期
     *
     * @param date   時間
     * @param format 日期格式
     * @return
     * @throws ParseException
     */
    public static String format(Date date, String format)
        throws ParseException {
        return format(date, format, Locale.getDefault());
    }

    /**
     * 格式化日期
     *
     * @param date   時間
     * @param format 日期格式
     * @param locale 語系
     * @return
     * @throws ParseException
     */
    public static String format(
        Date date,
        String format,
        Locale locale) throws ParseException {
        DateFormat formatter =
            new SimpleDateFormat(format, locale);
        return formatter.format(date);
    }

    /**
     * 格式化日期
     *
     * @param date 時間
     * @return
     * @throws ParseException
     */
    public static String format(Calendar date)
        throws ParseException {
        return format(date, DateFormat.DEFAULT, Locale.getDefault());
    }

    /**
     * 格式化日期
     *
     * @param date   時間
     * @param format 日期格式
     * @return
     * @throws ParseException
     */
    public static String format(Calendar date, int format)
        throws ParseException {
        return format(date, format, Locale.getDefault());
    }

    /**
     * 格式化日期
     *
     * @param date   時間
     * @param format 日期格式
     * @param locale 語系
     * @return
     * @throws ParseException
     */
    public static String format(
        Calendar date,
        int format,
        Locale locale) throws ParseException {
        return format(date.getTime(), format, locale);
    }

    /**
     * 格式化日期
     *
     * @param date   時間
     * @param format 日期格式
     * @return
     * @throws ParseException
     */
    public static String format(Calendar date, String format)
        throws ParseException {
        return format(date, format, Locale.getDefault());
    }

    /**
     * 格式化日期
     *
     * @param date   時間
     * @param format 日期格式
     * @param locale 語系
     * @return
     * @throws ParseException
     */
    public static String format(
        Calendar date,
        String format,
        Locale locale) throws ParseException {
        return format(date.getTime(), format, locale);
    }

}

results matching ""

    No results matching ""