Quartz任務(wù)中對(duì)于時(shí)間的設(shè)定箩祥,有一定的規(guī)則惫企,比如:
"05 39 21 27 8 ? 2017"
從數(shù)據(jù)庫(kù)取出來(lái)的時(shí)間格式不是這樣的,是這樣的:
2017-08-17 10:55:00
所以我們要提取其中的數(shù)字抡爹,代碼如下:
// 分割符是 "-" 或 空格" " 或冒號(hào) ":"
String time = "2017-08-17 10:55:00";
String[] times = time.split("[\\-:\\s]{1,}");
結(jié)果如下:
image.png
對(duì)了疏叨,還需要反轉(zhuǎn)潘靖,才能對(duì)上:
List<String> timesList = Arrays.asList(times);
Collections.reverse(timesList);
times = (String[]) timesList.toArray();
如下:
image.png
什么?還缺一個(gè)問(wèn)號(hào)蚤蔓?
由于Arrays.asList(times);返回的是一個(gè)固定長(zhǎng)度的List卦溢,這次要折騰一下了:
String time = "2017-08-17 10:55:00";
// 分割符是 "-" 或 空格" " 或冒號(hào) ":"
String[] times = time.split("[\\-:\\s]{1,}");
List<String> timesList = Arrays.asList(times);
List<String> flexibleTimesList = new ArrayList<String>();
flexibleTimesList.addAll(timesList);
flexibleTimesList.add(1,"?");
Collections.reverse(flexibleTimesList);
String[] resultTimes = new String[flexibleTimesList.size()];
for (String str : flexibleTimesList) {
System.out.println(str);
}
resultTimes = (String[]) flexibleTimesList.toArray();
打印都出來(lái)了,如下:
00
55
10
17
08
?
2017
但是走到最后一句单寂,結(jié)果報(bào)錯(cuò):
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
at com.test.hello.Main.main(Main.java:38)
為什么呢?
因?yàn)閠oArray()返回的是Object[] java.util.List.toArray()宣决,強(qiáng)轉(zhuǎn)String[]有問(wèn)題。改用如下的辦法:
flexibleTimesList.toArray(resultTimes);
OK了昏苏,看看結(jié)果:
image.png
最后威沫,別忘了轉(zhuǎn)換洼专,如下:
StringBuffer sb = new StringBuffer();
for(String str : resultTimes) {
sb.append(str + " ");
}
// 干掉最后一個(gè)空格
time = sb.toString().substring(0, sb.length() - 1);
System.out.println("{" + time + "}");
注:StringBuffer 比StringBuilder線程安全,比String +執(zhí)行效率高屁商,用這個(gè)連接字符串最合適。
打印結(jié)果如下蜡镶,多余的空格也剔除了:
{00 55 10 17 08 ? 2017}