Java中日期的解析与格式化

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

        本文以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;
		}
	}

转载于:https://my.oschina.net/belinwu/blog/70009

你可能感兴趣的:(Java中日期的解析与格式化)