2019独角兽企业重金招聘Python工程师标准>>>
本文以CST时间的解析和格式化为例:将CST时间的字符串格式化成某个指定模板的时间格式。该CST时间字符串为"Tue Jul 31 13:57:33 CST 2012",可以 使用 java.text.SimpleDateFormat类来完成。
1、使用"yyyy-MM-dd HH:mm:ss"模板字符串,构造出第一个SimpleDateFormat类对象sdf1。
DateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
2、使用"EEE MMM dd HH:mm:ss 'CST' yyyy"模板字符串,构造出第二个
SimpleDateFormat类对象sdf2。若是某个国家/地区的CST时间,则附带上一个Locale对象。这里以Locale.US为例。DateFormat sdf2 = new SimpleDateFormat("EEE MMM dd HH:mm:ss 'CST' yyyy", Locale.US);
3、将CST时间字符串解析成
Locale.US日期Date date = sdf2.parse("Tue Jul 31 13:57:33 CST 2012");
4、格式化date对象为指定模板的时间格式
sdf1.format(date);
完整的程序代码如下:
public class Test {
public static void main(String[] args) {
DateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
DateFormat sdf2 = new SimpleDateFormat("EEE MMM dd HH:mm:ss 'CST' yyyy", Locale.US);
try {
Date date = sdf2.parse("Tue Jul 31 13:57:33 CST 2012");
System.out.println(sdf1.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
输出结果为:2012-07-31 13:57:33
PS:可以将这些操作封装成工具类里的静态方法,以便复用。 如: 其中 CST_DATE_FORMAT是一个值为 "EEE MMM dd HH:mm:ss 'CST' yyyy"的静态常量。
public static String formatCST(String cstString, String toPattern, Locale locale) {
if (isNull(cstString, toPattern)) {
return null;
}
SimpleDateFormat sdf1 = new SimpleDateFormat(CST_DATE_FORMAT, locale);
SimpleDateFormat sdf2 = new SimpleDateFormat(toPattern);
try {
return sdf2.format(sdf1.parse(cstString.trim()));
} catch (ParseException e) {
return null;
}
}