setiaptanggal・wakturangkaianjava.util.Tanggal、java.util.KalenderKonversi ke
Di Java, semuanyaString tanggal dan waktuJika memungkinkan, java.util.Kalender 、 java.util.Tanggal Ini adalah contoh program untuk mengkonversi ke tipe data tertentu.
Konversi tersebut pertama-tama memformat tanggal dan waktu menjadi string tanggal dan waktu standar, lalu... java.util.Kalender Mengonversi ke tipe tersebut. Sebuah IllegalArgumentException akan dilemparkan jika konversi tidak memungkinkan.
Juga,java.util.Tanggal Untuk mengkonversi ke tipe yang benar, gunakan metode getTime() dari kelas Calendar.
Format tanggal berikut dapat dikonversi:
Contoh program
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.clear();
cal.set(yyyy,MM-1,dd);
int len = strDate.length();
saklar (panjang) {
Kasus 10:
merusak;
kasus 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);
kal.atur(Kalender.MENIT, mm);
merusak;
kasus 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);
kal.atur(Kalender.MENIT, mm);
cal.set(Calendar.SECOND,ss);
merusak;
kasus 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);
kal.atur(Kalender.MENIT, mm);
cal.set(Calendar.SECOND,ss);
cal.set(Calendar.MILLISECOND,SSS);
merusak;
bawaan:
lemparkan IllegalArgumentException baru (
“String argumen[" + strDate +
“"] tidak dapat dikonversi menjadi string tanggal."
}
kembalikan kal;
}
/**
* Berbagai string tanggal dan waktu dalam format tanggal dan waktu default
Konversi ke *.
*
* Format tanggal default adalah sebagai berikut:
* Hanya untuk tanggal: yyyy/MM/dd
* Untuk tanggal + waktu: yyyy/MM/dd HH:mm:ss.SSS
*
* @param str String yang akan dikonversi
* @return Format tanggal dan waktu default
* @throws IllegalArgumentException
* Jika string tanggal tidak dapat dikonversi
*/
privat statis String format(String str){
if (str == null || str.trim().length() < 8) {
lemparkan IllegalArgumentException baru (
“String argumen[" + str +
“"] tidak dapat dikonversi menjadi string tanggal."
}
str = str.trim();
String yyyy = null; String MM = null; String dd = null;
String HH = null; String mm = null;
String ss = null;String ss = null;
// Jika tidak ada tanda "-" atau "/"
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);
kembalikan 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);
kembali yyyy+”/”+MM+”/”+dd+” “+HH+”:”+mm+”:”+ss;
}
StringTokenizer token = new StringTokenizer(str,”_/-:. “);
StringBuffer result = new StringBuffer();
for(int i = 0; token.hasMoreTokens(); i++) {
String temp = token.nextToken();
beralih(i){
kasus 0:// bagian tahun
yyyy = fillString(str, temp, “L”, “20”, 4);
hasil.tambahkan(yyyy);
merusak;
kasus 1:// bagian bulan
MM = fillString(str, temp, “L”, “0”, 2);
hasil.tambahkan("/"+MM);
merusak;
kasus 2:// bagian hari
dd = fillString(str, temp, “L”, “0”, 2);
hasil.tambahkan("/"+dd);
merusak;
kasus 3:// bagian waktu
HH = fillString(str, temp, “L”, “0”, 2);
hasil.tambahkan(" "+HH);
merusak;
kasus 4:// bagian
mm = fillString(str, temp, “L”, “0”, 2);
hasil.tambahkan(":"+mm);
merusak;
kasus 5:// bagian tentang detik
ss = fillString(str, temp, “L”, “0”, 2);
hasil.tambahkan(":"+ss);
merusak;
kasus 6:// bagian milidetik
SSS = fillString(str, temp, “R”, “0”, 3);
hasil.tambahkan("."+SSS);
merusak;
}
}
return result.toString();
}
privat statis String fillString(String strDate, String str,
Posisi string, tambah string,
panjang bilangan bulat){
if (str.length() > len) {
lemparkan IllegalArgumentException baru (
“String argumen[" + strDate +
“"] tidak dapat dikonversi menjadi string tanggal."
}
kembalikan fillString(str, position, len, addStr);
}
/**
* Untuk string [str], tambahkan string yang akan ditambahkan [addStr]
* Menyisipkan pada posisi yang ditentukan oleh [position] hingga memenuhi nilai [len].
*
* *Meskipun [str] bernilai null atau literal kosong, [addStr] tetap akan berfungsi.
* Mengembalikan hasil penyisipan hingga [len] penuh.
* @param str String target
* @param position Sisipkan sebelum ⇒ L atau l Sisipkan setelah ⇒ R atau r
* @param len Jumlah digit yang akan ditambahkan
* @param addStr String yang akan disisipkan
* @return String yang telah dikonversi.
*/
privat statis String fillString(String str, String position,
panjang int,
String addStr) {
if (addStr == null || addStr.length() == 0) {
lemparkan IllegalArgumentException baru
(Nilai string yang akan disisipkan tidak valid. addStr=“+addStr);
}
jika (str == null) {
str = "";
}
StringBuffer buffer = new StringBuffer(str);
while (len > buffer.length()) {
jika (posisi sama dengan mengabaikan huruf besar/kecil ("l"))) {
int sum = buffer.length() + addStr.length();
jika (jumlah > panjang) {
addStr = addStr.substring
(0,addStr.length() – (sum – len));
buffer.insert(0, addStr);
kalau tidak{
buffer.insert(0, addStr);
}
kalau tidak {
buffer.append(addStr);
}
}
if (buffer.length() == len) {
return buffer.toString();
}
return buffer.toString().substring(0, len);
}
Hasil eksekusi
◆Contoh
// Pola yyyy-MM-dd
cal = toCalendar(“2007-01-01”);
tanggal = cal.getTime();
System.out.println(“[2007-01-01] = '‘+date+””‘);
// Pola yyyyMMdd
kal = toCalendar(“20070101”);
tanggal = cal.getTime();
System.out.println(“[20070101] = '‘+date+””‘);
// Pola yy-MM-dd
cal = toCalendar(“07-01-01”);
tanggal = cal.getTime();
System.out.println(“[07-01-01] = '‘+date+””‘);
System.out.println(“\n—– Tanggal+Waktu ————————–“);
// yyyy/MM/dd HH:mm:ss pola
cal = toCalendar(“2007/01/01 12:00:00”);
tanggal = cal.getTime();
System.out.println(“[2007/01/01 12:00:00] = '‘+date+””‘);
// yyyyMMdd HH:mm:ss pola
cal = toCalendar(“20070101 12:00:00”);
tanggal = cal.getTime();
System.out.println(“[20070101 12:00:00] = '‘+date+””‘);
// yyyy/MM/dd Pola HH:mm
cal = toCalendar(“2007/01/01 12:00”);
tanggal = cal.getTime();
System.out.println(“[2007/01/01 12:00] = '‘+date+””‘);
System.out.println("\n--- Hanya waktu ------");
// Pola: HH:mm:ss. *Jika hanya waktu yang dibutuhkan, tambahkan tanggal terlebih dahulu.
kal = keKalender(
new SimpleDateFormat(“yyyy/MM/dd”).format(new Date()) +
”"12:00:00");
tanggal = cal.getTime();
System.out.println(“[12:00:00] = '‘+date+””‘);
}
◆Hasil keluaran
----- Tanggal Saja --------------------------- [2007/01/01] = 'Senin 01 Jan 00:00:00 JST 2007' [2007-01-01] = 'Senin 01 Jan 00:00:00 JST 2007' [20070101] = 'Senin 01 Jan 00:00:00 JST 2007' [01-07-01] = 'Senin 01 Jan 00:00:00 JST 2007' ----- Tanggal + Waktu -------------------------- [2007/01/01 12:00:00] = 'Senin 01 Jan 12:00:00 JST 2007' [20070101 12:00:00] = 'Senin 01 Jan 12:00:00 JST 2007' [2007/01/01 12:00] = 'Senin 01 Jan 12:00:00 JST 2007' ----- Hanya waktu --------------------------- [12:00:00] = 'Rabu 06 Jun 12:00:00 JST 2007''
Program contoh ini untuk Chat&Messenger.Fungsi manajemen kalender dan jadwalSaya sebenarnya menggunakannya dalam [konteks ini].
