chaquedate・tempschaînejava.util.Date,,java.util.Calendarconvertir en
Tout en Javachaîne de date et d'heure, si possible java.util.Calendar ,, java.util.Date Ceci est un exemple de programme à convertir en type.
Pour la conversion, formatez d'abord dans la chaîne date/heure par défaut, puis java.util.Calendar Convertir en type. Si la conversion n'est pas possible, une IllegalArgumentException sera levée
En outre,java.util.Date Utilisez la méthode getTime() de la classe Calendar pour convertir en type.
Les formats de date pouvant être convertis sont les suivants.
exemple de programme
int aaaa = 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 (aaaa, MM-1, jj);
int len = strDate.length();
commutateur (len) {
cas 10 :
casser;
cas 16 : // aaaa/MM/jj 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(Calendrier.MINUTE,mm);
casser;
cas 19 : //aaaa/MM/jj 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(Calendrier.MINUTE,mm);
cal.set(Calendrier.SECOND,ss);
casser;
cas 23 : //aaaa/MM/jj 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(Calendrier.MINUTE,mm);
cal.set(Calendrier.SECOND,ss);
cal.set(Calendar.MILLISECOND,SSS);
casser;
défaut :
lancer une nouvelle IllegalArgumentException (
"Chaîne d'argument["+ strDate +
"] ne peut pas être converti en chaîne de date");
}
retour cal ;
}
/**
* Format date/heure par défaut pour diverses chaînes de date/heure
Convertir en *.
*
* ●Le format de date par défaut est le suivant.
* Pour la date seulement : aaaa/MM/jj
* Pour date + heure : aaaa/MM/jj HH:mm:ss.SSS
*
* @param str Chaîne à convertir
* @return Format date/heure par défaut
* @throws IllegalArgumentException
* Si la chaîne de date ne peut pas être convertie
*/
format de chaîne statique privé (String str) {
if (str == null || str.trim().length() < 8) {
lancer une nouvelle IllegalArgumentException (
"Chaîne d'argument ["+ str +
"] ne peut pas être converti en chaîne de date");
}
str = str.trim();
Chaîne aaaa = null ; Chaîne MM = nul ; Chaîne jj = nul ;
Chaîne HH = nulle ; Chaîne mm = nulle ; Chaîne mm = nulle ;
Chaîne ss = null ; Chaîne ss = null ;
// S'il manque "-" ou "/"
if (str.indexOf("/")==-1 && str.indexOf("-")==-1) {
si (str.length() == 8) {
aaaa = str.substring(0,4);
MM = str.substring(4,6);
dd = str.substring(6,8);
return aaaa+”/”+MM+”/”+jj ;
}
aaaa = 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);
return aaaa+”/”+MM+”/”+jj+” “+HH+”:”+mm+”:”+ss;
}
Jeton StringTokenizer = new StringTokenizer(str, "_/-:. ");
Résultat StringBuffer = new StringBuffer();
for(int i = 0; token.hasMoreTokens(); i++) {
String temp = token.nextToken();
commutateur(i){
cas 0:// année partie
aaaa = fillString(str, temp, "L", "20", 4);
result.append (aaaa);
casser;
cas 1:// partie du mois
MM = fillString(str, temp, "L", "0", 2);
result.append("/"+MM);
casser;
cas 2:// partie journée
dd = fillString(str, temp, "L", "0", 2);
result.append("/"+dd);
casser;
cas 3:// temps partiel
HH = fillString(str, temp, "L", "0", 2);
result.append(" "+HH);
casser;
cas 4:// partie minute
mm = fillString(str, temp, "L", "0", 2);
result.append(“:”+mm);
casser;
cas 5:// deuxième partie
ss = fillString(str, temp, "L", "0", 2);
result.append(“:”+ss);
casser;
cas 6:// partie milliseconde
SSS = fillString(str, temp, "R", "0", 3);
result.append(«.»+SSS);
casser;
}
}
return result.toString();
}
chaîne statique privée fillString (String strDate, String str,
Position de la chaîne, String addStr,
int len){
si (str.length() > len) {
lancer une nouvelle IllegalArgumentException (
"Chaîne d'argument["+ strDate +
"] ne peut pas être converti en chaîne de date");
}
return fillString(str, position, len,addStr);
}
/**
* Ajoutez la chaîne [addStr] à ajouter à la chaîne [str]
* Insérez à [position] jusqu'à ce que [len] soit rempli.
*
* *Même si [str] est nul ou un littéral vide, utilisez [addStr]
* Renvoie le résultat inséré jusqu'à ce que [len] soit rempli.
* @param str chaîne cible
* @param position Insérer avant ⇒ L ou l Insérer après ⇒ R ou r
* @param len Nombre de chiffres à reconstituer
* @param addStr Chaîne à insérer
* @return La chaîne après conversion.
*/
chaîne statique privée fillString (String str, position de la chaîne,
int len,
Chaîne addStr) {
if (addStr == null || addStr.length() == 0) {
lancer une nouvelle IllegalArgumentException
(« La valeur de la chaîne à insérer n'est pas valide. addStr= »+addStr) ;
}
si (str == nul) {
str = « » ;
}
Tampon StringBuffer = new StringBuffer(str);
while (len > buffer.length()) {
if (position.equalsIgnoreCase("l")) {
int sum = buffer.length() + addStr.length();
si (somme > len) {
addStr = addStr.substring
(0,addStr.length() – (somme – len));
tampon.insert(0, addStr);
}autre{
tampon.insert(0, addStr);
}
} autre {
buffer.append(addStr);
}
}
if (buffer.length() == len) {
return buffer.toString();
}
return buffer.toString().substring(0, len);
}
Résultat de l'exécution
◆Exemple d'exécution
// modèle aaaa-MM-jj
cal = toCalendar(« 01-01-2007 »);
date = cal.getTime();
System.out.println("[2007-01-01] = '"+date+"'");
// modèle aaaaMMjj
cal = versCalendrier("20070101");
date = cal.getTime();
System.out.println("[20070101] = '"+date+"'");
// modèle aa-MM-jj
cal = toCalendar("07-01-01");
date = cal.getTime();
System.out.println("[07-01-01] = '"+date+"'");
System.out.println("\n—– Date+Heure ————————–");
// modèle de aaaa/MM/jj HH:mm:ss
cal = toCalendar("01/01/2007 12:00:00");
date = cal.getTime();
System.out.println("[2007/01/01 12:00:00] = '"+date+"'");
// modèle de aaaaMMjj HH:mm:ss
cal = toCalendar("20070101 12:00:00");
date = cal.getTime();
System.out.println("[20070101 12:00:00] = '"+date+"'");
// modèle de aaaa/MM/jj HH:mm
cal = toCalendar("01/01/2007 12:00");
date = cal.getTime();
System.out.println("[2007/01/01 12:00] = '"+date+"'");
System.out.println("\n—– Heure uniquement —————————");
// Modèle de HH:mm:ss. *Si seule l'heure est utilisée, ajoutez la date devant.
cal = versCalendrier(
new SimpleDateFormat("aaaa/MM/jj").format(new Date()) +
” 12:00:00″);
date = cal.getTime();
System.out.println("[12:00:00] = '"+date+"'");
}
◆Résultat de sortie
----- Date uniquement --------------------------- [2007/01/01] = 'Lun. 01 janvier 00:00 : 00 JST 2007' [2007-01-01] = 'Lun. 01 janvier 00:00:00 JST 2007' [20070101] = 'Lun. 01 janvier 00:00:00 JST 2007' [07-01-01] = 'Lun. 01 janvier 00:00:00 JST 2007' ----- Date+Heure -------------------------- [2007/01/01 12:00:00] = 'Lun. 01 janvier 12:00:00 JST 2007' [20070101 12:00:00] = 'Lun. 01 janvier 12:00:00 JST 2007' [2007/01/01 12:00] = 'Lun. 01 janvier 12:00:00 JST 2007' ----- Heure uniquement --------------------------- [12 : 00:00] = 'mercredi 6 juin 12:00:00 JST 2007'
Cet exemple de programme est destiné à Chat&Messenger.Fonction de gestion de calendrier/horaire» est effectivement utilisé.