mọingày・thời giansợi dâyjava.util.Date,java.util.Calendarchuyển đổi thành
Mọi thứ trong Javachuỗi ngày, giờ, nếu có thể java.util.Calendar , java.util.Date Đây là một chương trình mẫu để chuyển đổi sang kiểu chữ.
Để chuyển đổi, trước tiên hãy định dạng thành chuỗi ngày/giờ mặc định, sau đó java.util.Calendar Chuyển đổi sang loại. Nếu không thể chuyển đổi, IllegalArgumentException sẽ được ném ra
Cũng,java.util.Date Sử dụng phương thức getTime() của lớp Calendar để chuyển đổi sang kiểu.
Các định dạng ngày có thể được chuyển đổi như sau.
chương trình mẫu
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(Lịch.HOUR_OF_DAY);
int mm = cal.get(Lịch.PHÚT);
int ss = cal.get(Calendar.SECOND);
int SSS = cal.get(Lịch.MILLISECOND);
cal.clear();
cal.set(yyyy,MM-1,dd);
int len = strDate.length();
chuyển đổi (len) {
trường hợp 10:
phá vỡ;
trường hợp 16: // yyyy/MM/dd HH:mm
HH = Integer.parseInt(strDate.substring(11,13));
mm = Integer.parseInt(strDate.substring(14,16));
cal.set(Calendar.HOUR_OF_DAY,HH);
cal.set(Lịch.MINUTE,mm);
phá vỡ;
trường hợp 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(Lịch.MINUTE,mm);
cal.set(Calendar.SECOND,ss);
phá vỡ;
trường hợp 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(Lịch.MINUTE,mm);
cal.set(Calendar.SECOND,ss);
cal.set(Lịch.MILLISECOND,SSS);
phá vỡ;
mặc định :
ném IllegalArgumentException mới (
“Chuỗi đối số[“+ strDate +
“] không thể chuyển đổi thành chuỗi ngày tháng”);
}
trả lại cal;
}
/**
* Định dạng ngày/giờ mặc định cho các chuỗi ngày/giờ khác nhau
Chuyển đổi sang *.
*
* ●Định dạng ngày mặc định như sau.
* Chỉ dành cho ngày: yyyy/MM/dd
* Đối với ngày + giờ: yyyy/MM/dd HH:mm:ss.SSS
*
* @param str Chuỗi để chuyển đổi
* @return Định dạng ngày/giờ mặc định
* @ném IllegalArgumentException
* Nếu chuỗi ngày không thể chuyển đổi
*/
Định dạng chuỗi tĩnh riêng tư (Chuỗi str) {
if (str == null || str.trim().length() < 8) {
ném IllegalArgumentException mới (
“Chuỗi đối số [“+ str +
“] không thể chuyển đổi thành chuỗi ngày tháng”);
}
str = str.trim();
Chuỗi yyyy = null; Chuỗi MM = null; Chuỗi dd = null;
Chuỗi HH = null; Chuỗi mm = null;
Chuỗi ss = null;Chuỗi ss = null;
// Nếu thiếu “-” hoặc “/”
if (str.indexOf(“/”)==-1 && str.indexOf(“-“)==-1) {
if (str.length() == 8) {
yyyy = str.substring(0,4);
MM = str.chuỗi con(4,6);
dd = str.substring(6,8);
return yyyy+”/”+MM+”/”+dd;
}
yyyy = str.substring(0,4);
MM = str.chuỗi con(4,6);
dd = str.substring(6,8);
HH = str.chuỗi con(9,11);
mm = str.substring(12,14);
ss = str.substring(15,17);
return yyyy+”/”+MM+”/”+dd+” “+HH+”:”+mm+”:”+ss;
}
Mã thông báo StringTokenizer = StringTokenizer mới(str,”_/-:. “);
Kết quả StringBuffer = StringBuffer mới();
for(int i = 0; token.hasMoreTokens(); i++) {
Chuỗi tạm thời = token.nextToken();
chuyển đổi(i){
trường hợp 0:// phần năm
yyyy = fillString(str, temp, “L”, “20”, 4);
result.append(yyyy);
phá vỡ;
trường hợp 1:// phần tháng
MM = fillString(str, temp, “L”, “0”, 2);
result.append(“/”+MM);
phá vỡ;
trường hợp 2:// phần ngày
dd = fillString(str, temp, “L”, “0”, 2);
result.append(“/”+dd);
phá vỡ;
trường hợp 3:// phần thời gian
HH = fillString(str, temp, “L”, “0”, 2);
result.append(” “+HH);
phá vỡ;
trường hợp 4:// phần phút
mm = fillString(str, temp, “L”, “0”, 2);
result.append(“:”+mm);
phá vỡ;
trường hợp 5:// phần thứ hai
ss = fillString(str, temp, “L”, “0”, 2);
result.append(“:”+ss);
phá vỡ;
trường hợp 6:// phần mili giây
SSS = fillString(str, temp, “R”, “0”, 3);
result.append(“.”+SSS);
phá vỡ;
}
}
trả về result.toString();
}
Chuỗi tĩnh riêng fillString(Chuỗi strDate, Chuỗi str,
Vị trí chuỗi, Chuỗi addStr,
int len){
if (str.length() > len) {
ném IllegalArgumentException mới (
“Chuỗi đối số[“+ strDate +
“] không thể chuyển đổi thành chuỗi ngày tháng”);
}
trả về fillString(str, location, len,addStr);
}
/**
* Thêm chuỗi [addStr] để thêm vào chuỗi [str]
* Chèn tại [vị trí] cho đến khi [len] được lấp đầy.
*
* *Ngay cả khi [str] là null hoặc bằng chữ trống, hãy sử dụng [addStr]
* Trả về kết quả được chèn cho đến khi [len] được điền.
* @param str chuỗi mục tiêu
* @param location Chèn trước ⇒ L hoặc l Chèn sau ⇒ R hoặc r
* @param len Số chữ số cần bổ sung
* @param addStr Chuỗi để chèn
* @return Chuỗi sau khi chuyển đổi.
*/
chuỗi tĩnh riêng fillString(Chuỗi str, Vị trí chuỗi,
int len,
Chuỗi addStr) {
if (addStr == null || addStr.length() == 0) {
ném IllegalArgumentException mới
(“Giá trị của chuỗi được chèn không hợp lệ. addStr=”+addStr);
}
nếu (str == null) {
str = “”;
}
Bộ đệm StringBuffer = StringBuffer mới(str);
while (len > buffer.length()) {
if (position.equalsIgnoreCase(“l”)) {
int sum = buffer.length() + addStr.length();
if (tổng > len) {
addStr = addStr.substring
(0,addStr.length() – (tổng – len));
buffer.insert(0, addStr);
}khác{
buffer.insert(0, addStr);
}
} khác {
đệm.append(addStr);
}
}
if (buffer.length() == len) {
trả về bộ đệm.toString();
}
return buffer.toString().substring(0, len);
}
Kết quả thực hiện
◆Ví dụ thực thi
// mẫu yyyy-MM-dd
cal = toCalendar(“2007-01-01”);
ngày = cal.getTime();
System.out.println(“[2007-01-01] = '”+date+”'”);
// mẫu yyyyMMdd
cal = toCalendar(“20070101”);
ngày = cal.getTime();
System.out.println(“[20070101] = '”+date+”'”);
// mẫu yy-MM-dd
cal = toCalendar(“07-01-01”);
ngày = cal.getTime();
System.out.println(“[07-01-01] = '”+date+”'”);
System.out.println(“\n—– Ngày+Giờ —————————–“);
// mẫu của yyyy/MM/dd HH:mm:ss
cal = toCalendar(“2007/01/01 12:00:00”);
ngày = cal.getTime();
System.out.println(“[2007/01/01 12:00:00] = '”+date+”'”);
// mẫu của yyyyMMdd HH:mm:ss
cal = toCalendar(“20070101 12:00:00”);
ngày = cal.getTime();
System.out.println(“[20070101 12:00:00] = '”+date+”'”);
// mẫu của yyyy/MM/dd HH:mm
cal = toCalendar(“2007/01/01 12:00”);
ngày = cal.getTime();
System.out.println(“[2007/01/01 12:00] = '”+date+”'”);
System.out.println(“\n—– Chỉ thời gian ——————————“);
// Mẫu HH:mm:ss. *Nếu chỉ sử dụng thời gian, hãy thêm ngày ở phía trước.
cal = toCalendar(
SimpleDateFormat mới(“yyyy/MM/dd”).format(new Date()) +
” 12:00:00″);
ngày = cal.getTime();
System.out.println(“[12:00:00] = '”+date+”'”);
}
◆Kết quả đầu ra
----- Chỉ ngày ------------------ [2007/01/01] = 'Thứ Hai ngày 01 tháng 1 00:00: 00 JST 2007' [2007-01-01] = 'Thứ Hai ngày 01 tháng 1 00:00:00 JST 2007' [20070101] = 'Thứ Hai ngày 01 tháng 1 00:00:00 JST 2007' [07-01-01] = 'Thứ Hai Ngày 01 tháng 1 00:00:00 JST 2007' ----- Ngày+Giờ ----------------- [2007/01/01 12:00:00] = 'Thứ Hai ngày 01 tháng 1 12:00:00 JST 2007' [20070101 12:00:00] = 'Thứ Hai ngày 01 tháng 1 12:00:00 JST 2007' [2007/01/01 12:00] = 'Thứ Hai ngày 01 tháng 1 12:00:00 JST 2007' ------ Chỉ thời gian ------------------ [12: 00:00] = 'Thứ Tư ngày 06 tháng 6 12:00:00 JST 2007'
Chương trình mẫu này dành cho Chat&Messenger.Chức năng quản lý lịch/lịch trình” thực sự được sử dụng.