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);
}
}