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