在工作上莫名遇到此bug,在努力爬文後,發覺有兩種寫法
兩種方法各有優缺,不過不可以寫在一起,因為import java.util.Date 和 import java.sql.Date 會衝突到同名字
1.SimpleDateFormat
對我們來說這種方法並不陌生,不過噴錯機率也高嚇人,原因在於String千變萬化
結果圖:
程式碼:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class sTime {
public static void main(String[] args) throws Exception {
DateFormat f = new SimpleDateFormat("yyyy/mm/dd");
System.out.println("================測試2015/09/19=================");
String d = "2015/09/19";
Date date = f.parse(d);
System.out.println(date);
System.out.println("================測試2015/09/19=================");
System.out.println();
System.out.println();
DateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println("================測試15:30:10=================");
String time1 = "15:30:10";
Date date1 = sdf.parse(time1);
System.out.println(date1);
System.out.println("================測試15:30:10=================");
System.out.println();
System.out.println();
System.out.println("================測試05:00 PM=================");
String time2 = "05:00 PM";
Date date2 = sdf.parse((getTime(time2)).trim());
System.out.println(date2);
System.out.println("================測試05:00 PM=================");
}
public static String getTime(String input) {
char[] chars = input.toCharArray();
if (chars[6] == 'P'){
chars[0] = (char)((int)chars[0]+1);
chars[1] = (char)((int)chars[1]+2);
}
chars[5] = ':';
chars[6] = '0';
chars[7] = '0';
return new String(chars);
}
}
convert string to time參考網址:http://www.java2s.com/Code/Java/Data-Type/Convertstringoftimetotimeobject.htm
2.Time.valueOf()
這種方法格式是依據SQL,不能隨意,不過可以保證存入資料庫不會出錯
結果圖:
程式碼:
import java.sql.*; //Date,Time
public class timeformat {
public static void main(String[] args) {
System.out.println("================測試2015-09-19=================");
String d = "2015-09-19"; //只能"yyyy-mm-dd"
Date date = Date.valueOf(d);
System.out.println(date);
System.out.println("================測試2015-09-19=================");
System.out.println();
System.out.println();
System.out.println("================測試13:48:00=================");
String t = "13:48:00"; //只能"HH:mm:ss"
Time time1 = Time.valueOf(t);
System.out.println(time1);
System.out.println("================測試13:48:00=================");
System.out.println();
System.out.println();
System.out.println("================測試03:48 PM=================");
String text = "03:48 PM";
System.out.println(getTime(text));
Time time2 = Time.valueOf((getTime(text)).trim());
System.out.println(time2);
System.out.println("================測試03:48 PM=================");
}
public static String getTime(String input) {
char[] chars = input.toCharArray();
if (chars[6] == 'P'){
chars[0] = (char)((int)chars[0]+1);
chars[1] = (char)((int)chars[1]+2);
}
chars[5] = ':';
chars[6] = '0';
chars[7] = '0';
return new String(chars);
}
}
convert string in time參考網址:http://stackoverflow.com/questions/5451016/convert-string-in-time-to-time-object-without-date