ทั้งหมดวันที่・เวลาเชือกjava.util.วันที่,java.util.ปฏิทินเปลี่ยนเป็น
ทุกอย่างในชวาวันที่, สตริงเวลา, ถ้าเป็นไปได้ java.util.ปฏิทิน , java.util.วันที่ นี่คือโปรแกรมตัวอย่างในการแปลงเป็นประเภท
สำหรับการแปลง ให้จัดรูปแบบเป็นสตริงวันที่/เวลาเริ่มต้นก่อน จากนั้น java.util.ปฏิทิน แปลงเป็นประเภท หากไม่สามารถแปลงได้ ระบบจะส่ง IllegalArgumentException ออกไป
อีกด้วย,java.util.วันที่ ใช้เมธอด getTime() ของคลาส Calendar เพื่อแปลงเป็นประเภท
รูปแบบวันที่ที่สามารถแปลงได้มีดังนี้
โปรแกรมตัวอย่าง
int yyyy = Integer.parseInt(strDate.substring(0,4));
int MM = Integer.parseInt(strDate.substring(5,7));
int dd = Integer.parseInt(strDate.substring(8,10));
int HH = cal.get(ปฏิทิน.HOUR_OF_DAY);
int mm = cal.get(ปฏิทิน.นาที);
int ss = cal.get(ปฏิทิน.วินาที);
int SSS = cal.get(ปฏิทิน.มิลลิวินาที);
cal.ชัดเจน();
cal.set(ปปปป,MM-1,dd);
int len = strDate.length();
สวิตช์ (เลน) {
กรณีที่ 10:
หยุดพัก;
กรณีที่ 16: // ปปปป/ดด/วว HH:mm
HH = Integer.parseInt(strDate.substring(11,13));
มม. = Integer.parseInt(strDate.substring(14,16));
cal.set(ปฏิทิน.HOUR_OF_DAY,HH);
cal.set(ปฏิทิน.นาที,มม.);
หยุดพัก;
กรณีที่ 19: //yyyy/MM/dd HH:mm:ss
HH = Integer.parseInt(strDate.substring(11,13));
มม. = Integer.parseInt(strDate.substring(14,16));
เอสเอส = Integer.parseInt(strDate.substring(17,19));
cal.set(ปฏิทิน.HOUR_OF_DAY,HH);
cal.set(ปฏิทิน.นาที,มม.);
cal.set(ปฏิทิน.วินาที,ss);
หยุดพัก;
กรณีที่ 23: //yyyy/MM/dd HH:mm:ss.SSS
HH = Integer.parseInt(strDate.substring(11,13));
มม. = Integer.parseInt(strDate.substring(14,16));
เอสเอส = Integer.parseInt(strDate.substring(17,19));
SSS = Integer.parseInt(strDate.substring(20,23));
cal.set(ปฏิทิน.HOUR_OF_DAY,HH);
cal.set(ปฏิทิน.นาที,มม.);
cal.set(ปฏิทิน.วินาที,ss);
cal.set(ปฏิทิน.มิลลิวินาที,SSS);
หยุดพัก;
ค่าเริ่มต้น :
โยน IllegalArgumentException ใหม่ (
“สตริงอาร์กิวเมนต์[“+ strDate +
“] ไม่สามารถแปลงเป็นสตริงวันที่ได้”);
}
กลับแคล;
}
/**
* รูปแบบวันที่/เวลาเริ่มต้นสำหรับสตริงวันที่/เวลาต่างๆ
เปลี่ยนเป็น *.
*
* ●รูปแบบวันที่เริ่มต้นเป็นดังนี้
* สำหรับวันที่เท่านั้น: ปปปป/ดด/วว
* สำหรับวันที่ + เวลา: ปปปป/ดด/วว HH:mm:ss.SSS
*
* @param str สตริงที่จะแปลง
* @return รูปแบบวันที่/เวลาเริ่มต้น
* @ พ่น IllegalArgumentException
* หากไม่สามารถแปลงสตริงวันที่ได้
*/
รูปแบบสตริงคงที่ส่วนตัว (String str) {
ถ้า (str == null || str.trim().length() < 8) {
โยน IllegalArgumentException ใหม่ (
“สตริงอาร์กิวเมนต์ [“+ str +
“] ไม่สามารถแปลงเป็นสตริงวันที่ได้”);
}
str = str.ตัดแต่ง();
สตริง yyyy = null; สตริง MM = null; สตริง dd = null;
สตริง HH = null; สตริง mm = null;
สตริง ss = null; สตริง ss = null;
// หากไม่มี “-” หรือ “/”
ถ้า (str.indexOf("/")==-1 && str.indexOf("-")==-1) {
ถ้า (str.length() == 8) {
ปปปป = str.substring(0,4);
MM = str.สตริงย่อย(4,6);
dd = str.substring(6,8);
กลับ ปปปป+”/”+MM+”/”+dd;
}
ปปปป = str.substring(0,4);
MM = str.สตริงย่อย(4,6);
dd = str.substring(6,8);
HH = str.substring(9,11);
มม. = str.สตริงย่อย (12,14);
เอสเอส = str.substring(15,17);
ส่งคืน ปปปป+”/”+MM+”/”+dd+” “+HH+”:”+mm+”:”+ss;
}
โทเค็น StringTokenizer = StringTokenizer ใหม่ (str,”_/-:. “);
ผลลัพธ์ StringBuffer = StringBuffer ใหม่ ();
สำหรับ (int i = 0; token.hasMoreTokens (); i ++) {
อุณหภูมิสตริง = token.nextToken();
สวิตช์ (i) {
กรณี 0:// ปี ส่วน
ปปปป = fillString(str, temp, “L”, “20”, 4);
result.ผนวก(yyyy);
หยุดพัก;
กรณีที่ 1:// เดือน ส่วน
MM = fillString(str, อุณหภูมิ, “L”, “0”, 2);
result.ผนวก(“/”+MM);
หยุดพัก;
กรณีที่ 2:// ส่วนวัน
dd = fillString(str, อุณหภูมิ, “L”, “0”, 2);
result.ผนวก(“/”+dd);
หยุดพัก;
กรณีที่ 3:// ส่วนเวลา
HH = fillString(str, อุณหภูมิ, “L”, “0”, 2);
result.ผนวก(” “+HH);
หยุดพัก;
กรณีที่ 4:// ส่วนนาที
มม. = fillString(str, อุณหภูมิ, “L”, “0”, 2);
result.ผนวก(“:”+mm);
หยุดพัก;
กรณีที่ 5:// ส่วนที่สอง
ss = fillString(str, อุณหภูมิ, “L”, “0”, 2);
result.ผนวก(“:”+ss);
หยุดพัก;
กรณีที่ 6:// ส่วนมิลลิวินาที
SSS = fillString(str, อุณหภูมิ, “R”, “0”, 3);
result.ผนวก("."+SSS);
หยุดพัก;
}
}
กลับผลลัพธ์ toString();
}
fillString สตริงคงที่ส่วนตัว (String strDate, String str,
ตำแหน่งสตริง, สตริง addStr,
อินท์เลน){
ถ้า (str.length() > len) {
โยน IllegalArgumentException ใหม่ (
“สตริงอาร์กิวเมนต์[“+ strDate +
“] ไม่สามารถแปลงเป็นสตริงวันที่ได้”);
}
กลับ fillString (str, ตำแหน่ง, len, addStr);
}
/**
* เพิ่มสตริง [addStr] ที่จะเพิ่มลงในสตริง [str]
* ใส่ที่ [ตำแหน่ง] จนกระทั่ง [len] เต็ม
*
* *แม้ว่า [str] จะเป็นโมฆะหรือว่างเปล่า ให้ใช้ [addStr]
* ส่งกลับผลลัพธ์ที่แทรกไว้จนกว่า [len] จะเต็ม
* สตริงเป้าหมาย @param str
* ตำแหน่ง @param แทรกก่อน ⇒ L หรือ l แทรกหลัง ⇒ R หรือ r
* @param len จำนวนหลักที่จะเติม
* @param addStr สตริงที่จะแทรก
* @return สตริงหลังการแปลง
*/
fillString สตริงคงที่ส่วนตัว (String str, ตำแหน่งสตริง,
อินท์เลน,
สตริง addStr) {
ถ้า (addStr == null || addStr.length() == 0) {
โยน IllegalArgumentException ใหม่
(“ค่าของสตริงที่จะแทรกไม่ถูกต้อง addStr=”+addStr);
}
ถ้า (str == null) {
STR = “”;
}
บัฟเฟอร์ StringBuffer = StringBuffer ใหม่ (str);
ในขณะที่ (len > buffer.length()) {
ถ้า (position.equalsIgnoreCase("l")) {
int sum = buffer.length() + addStr.length();
ถ้า (ผลรวม > len) {
addStr = addStr.สตริงย่อย
(0,addStr.length() – (ผลรวม – เลน));
buffer.insert(0, addStr);
}อื่น{
buffer.insert(0, addStr);
}
} อื่น {
buffer.ผนวก(addStr);
}
}
ถ้า (buffer.length() == len) {
กลับ buffer.toString();
}
กลับ buffer.toString().substring(0, len);
}
ผลการดำเนินการ
◆ตัวอย่างการดำเนินการ
// รูปแบบ ปปปป-MM-dd
cal = toCalendar(“2007-01-01”);
วันที่ = cal.getTime();
System.out.println(“[2007-01-01] = '”+วันที่+”’”);
//yyyyMMdd รูปแบบ
cal = toCalendar(“20070101”);
วันที่ = cal.getTime();
System.out.println(“[20070101] = '”+วันที่+”’”);
// รูปแบบ yy-MM-dd
cal = toCalendar(“07-01-01”);
วันที่ = cal.getTime();
System.out.println(“[07-01-01] = '”+วันที่+”’”);
System.out.println(“\n—– วันที่ + เวลา ————————–“);
// รูปแบบของ ปปปป/ดด/วว HH:mm:ss
cal = toCalendar(“2007/01/01 12:00:00”);
วันที่ = cal.getTime();
System.out.println(“[2007/01/01 12:00:00] = '”+วันที่+”’”);
// รูปแบบของ yyyyMMdd HH:mm:ss
cal = toCalendar(“20070101 12:00:00”);
วันที่ = cal.getTime();
System.out.println("[20070101 12:00:00] = '”+date+”’”);
// รูปแบบของ ปปปป/ดด/วว HH:mm
cal = toCalendar(“2007/01/01 12:00”);
วันที่ = cal.getTime();
System.out.println(“[2007/01/01 12:00] = '”+วันที่+”’”);
System.out.println(“\n—– เวลาเท่านั้น —————————“);
// รูปแบบของ HH:mm:ss. *หากใช้เฉพาะเวลา ให้ใส่วันที่ข้างหน้า
cal = ถึงปฏิทิน (
ใหม่ SimpleDateFormat (“ปปปป/ดด/วว”).รูปแบบ(วันที่ใหม่()) +
” 12:00:00″);
วันที่ = cal.getTime();
System.out.println(“[12:00:00] = '”+date+”’”);
}
◆ผลลัพธ์เอาท์พุต
----- วันที่เท่านั้น --------------------------- [2007/01/01] = 'จันทร์ที่ 01 มกราคม 00:00: 00 JST 2007' [2007-01-01] = 'จันทร์ที่ 01 มกราคม 00:00:00 JST 2007' [20070101] = 'จันทร์ที่ 01 มกราคม 00:00:00 JST 2007' [07-01-01] = 'จันทร์ 1 ม.ค. 00:00:00 JST 2007' ----- วันที่+เวลา -------------------------- [2007/01/01 12:00:00] = 'จันทร์ที่ 01 มกราคม 12:00:00 JST 2007' [20070101 12:00:00] = 'จันทร์ที่ 01 มกราคม 12:00:00 JST 2007' [2007/01/01 12:00] = 'จันทร์ที่ 1 มกราคม 12:00:00 JST 2007' ----- เวลาเท่านั้น --------------------------- [12: 00:00] = 'พุธที่ 6 มิ.ย. 12:00:00 JST 2007'
โปรแกรมตัวอย่างนี้มีไว้สำหรับ Chat&Messengerฟังก์ชั่นการจัดการปฏิทิน/กำหนดการ” ถูกนำมาใช้จริง