之前写过一个同样功能的方法,不过是用了Map实现的,参见:点击打开链接
但是这样似乎代价有点大,每次调用就创建一个Map。于是就写了一个枚举的实现。就不贴运行结果图了,要校验的可以复制下去运行一遍。完整代码如下。
package myTest;
import java.util.*;
public class Test2{
public enum MonthEnum {
//Nothing值为0,以后递增
Nothing, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec;
}
public static void main(String[] args){
String whatTheFuckDate = "Fri Dec 7 10:08:00 UTC 0800 2016";
System.out.println(formatDate(whatTheFuckDate));
}
public static String formatDate(String whatTheFuckDate){
StringBuilder afterConvert = new StringBuilder();
//拆分后的数组下标对应 0 1 2 3 4 5 6
//日期是这种形式 Fri Oct 7 10:08:00 UTC 0800 2016
String[] arr = whatTheFuckDate.split(" ");
afterConvert.append(arr[6] + "-");
int m = MonthEnum.valueOf(arr[1]).ordinal();
afterConvert.append( (m < 10 ? "0"+m:m) + "-");
if(arr[2].length() < 2){
afterConvert.append("0" + arr[2] + " ");
}
else{
afterConvert.append(arr[2] + " ");
}
afterConvert.append(arr[3]);
return afterConvert.toString();
}
}