tododata・tempocordajava.util.Date,,java.util.Calendarconverter para
Tudo em Javadata, sequência de tempo, se possível java.util.Calendar ,, java.util.Date Este é um programa de exemplo para converter em tipo.
Para conversão, primeiro formate para a sequência de data/hora padrão e, em seguida, java.util.Calendar Converter para tipo. Se a conversão não for possível, uma IllegalArgumentException será lançada
Também,java.util.Date Use o método getTime() da classe Calendar para converter para tipo.
Os formatos de data que podem ser convertidos são os seguintes.
programa de amostra
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(Calendário.HOUR_OF_DAY);
int mm = cal.get(Calendário.MINUTE);
int ss = cal.get(Calendário.SECOND);
int SSS = cal.get(Calendário.MILLISECOND);
cal.claro();
cal.set(aaaa,MM-1,dd);
int len = strDate.length();
mudar (len) {
caso 10:
quebrar;
caso 16: // aaaa/MM/dd HH:mm
HH = Integer.parseInt(strDate.substring(11,13));
mm = Integer.parseInt(strDate.substring(14,16));
cal.set(Calendário.HOUR_OF_DAY,HH);
cal.set(Calendário.MINUTE,mm);
quebrar;
caso 19: //aaaa/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(Calendário.HOUR_OF_DAY,HH);
cal.set(Calendário.MINUTE,mm);
cal.set(Calendário.SEGUNDO,ss);
quebrar;
caso 23: //aaaa/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(Calendário.HOUR_OF_DAY,HH);
cal.set(Calendário.MINUTE,mm);
cal.set(Calendário.SEGUNDO,ss);
cal.set(Calendário.MILLISECOND,SSS);
quebrar;
padrão :
lançar novo IllegalArgumentException(
“Sequência de argumentos[“+ strDate +
“] não pode ser convertido em uma string de data”);
}
retornar cal;
}
/**
* Formato de data/hora padrão para várias strings de data/hora
Converter para *.
*
* ●O formato de data padrão é o seguinte.
* Somente para data: aaaa/MM/dd
* Para data + hora: aaaa/MM/dd HH:mm:ss.SSS
*
* @param str String a ser convertida
* @return Formato padrão de data/hora
* @throws IllegalArgumentException
* Se a string de data não puder ser convertida
*/
formato de String estática privada(String str){
if (str == nulo || str.trim().length() <8) {
lançar novo IllegalArgumentException(
“Sequência de argumentos [“+ str +
“] não pode ser convertido em uma string de data”);
}
str = str.trim();
String aaaa = nulo; String MM = nulo; String dd = nulo;
String HH = nulo; String mm = nulo;
String ss = nulo;String ss = nulo;
//Se “-” ou “/” estiver faltando
if (str.indexOf(“/”)==-1 && str.indexOf(“-“)==-1) {
if (str.comprimento() == 8) {
aaaa = str.substring(0,4);
MM = str.substring(4,6);
dd = str.substring(6,8);
retornar aaaa+”/”+MM+”/”+dd;
}
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+”/”+dd+” “+HH+”:”+mm+”:”+ss;
}
Token StringTokenizer = new StringTokenizer(str,”_/-:. “);
Resultado StringBuffer = new StringBuffer();
for(int i = 0; token.hasMoreTokens(); i++) {
String temp = token.nextToken();
mudar(eu){
caso 0:// ano parte
aaaa = fillString(str, temp, “L”, “20”, 4);
resultado.append(aaaa);
quebrar;
caso 1: // parte do mês
MM = fillString(str, temp, “L”, “0”, 2);
resultado.append(“/”+MM);
quebrar;
caso 2: // parte do dia
dd = fillString(str, temp, “L”, “0”, 2);
resultado.append(“/”+dd);
quebrar;
caso 3: // parte do tempo
HH = fillString(str, temp, “L”, “0”, 2);
resultado.append(” “+HH);
quebrar;
caso 4: // parte do minuto
mm = fillString(str, temp, “L”, “0”, 2);
resultado.append(“:”+mm);
quebrar;
caso 5: // segunda parte
ss = fillString(str, temp, “L”, “0”, 2);
resultado.append(“:”+ss);
quebrar;
caso 6: // parte do milissegundo
SSS = fillString(str, temp, “R”, “0”, 3);
resultado.append(“.”+SSS);
quebrar;
}
}
retornar resultado.toString();
}
String estática privada fillString (String strDate, String str,
Posição da string, String addStr,
int len){
if (str.length() > len) {
lançar novo IllegalArgumentException(
“Sequência de argumentos[“+ strDate +
“] não pode ser convertido em uma string de data”);
}
return fillString(str, posição, len, addStr);
}
/**
* Adicione a string [addStr] para ser adicionada à string [str]
* Insira em [posição] até que [len] seja preenchido.
*
* *Mesmo que [str] seja nulo ou um literal vazio, use [addStr]
* Retorna o resultado inserido até que [len] seja preenchido.
* @param str string de destino
* @param position Inserir antes de ⇒ L ou l Inserir depois de ⇒ R ou r
* @param len Número de dígitos a serem reabastecidos
* @param addStr String a ser inserida
* @return A string após a conversão.
*/
string estática privada fillString (String str, posição da string,
interno,
String addStr) {
if (addStr == nulo || addStr.length() == 0) {
lança nova IllegalArgumentException
(“O valor da string a ser inserida é inválido. addStr=”+addStr);
}
if (str == nulo) {
str = “”;
}
Buffer StringBuffer = novo StringBuffer(str);
while (len > buffer.length()) {
if (posição.equalsIgnoreCase(“l”)) {
int soma = buffer.length() + addStr.length();
if (soma > len) {
addStr = addStr.substring
(0,addStr.length() – (soma – len));
buffer.insert(0, addStr);
}outro{
buffer.insert(0, addStr);
}
} outro {
buffer.append(addStr);
}
}
if (buffer.length() == len) {
retornar buffer.toString();
}
retornar buffer.toString().substring(0, len);
}
Resultado da execução
◆Exemplo de execução
// padrão aaaa-MM-dd
cal = toCalendar(“2007-01-01”);
data = cal.getTime();
System.out.println(“[2007-01-01] = '”+data+”’”);
//padrão aaaaMMdd
cal = toCalendar(“20070101”);
data = cal.getTime();
System.out.println(“[20070101] = '”+data+”’”);
// padrão aa-MM-dd
cal = toCalendar(“07-01-01”);
data = cal.getTime();
System.out.println(“[07-01-01] = '”+data+”’”);
System.out.println(“\n—– Data+Hora ———————–“);
// padrão de aaaa/MM/dd HH:mm:ss
cal = toCalendar(“2007/01/01 12:00:00”);
data = cal.getTime();
System.out.println(“[01/01/2007 12:00:00] = '”+data+”’”);
// padrão de yyyyMMdd HH:mm:ss
cal = toCalendar(“20070101 12:00:00”);
data = cal.getTime();
System.out.println(“[20070101 12:00:00] = '”+data+”’”);
// padrão de aaaa/MM/dd HH:mm
cal = toCalendar(“2007/01/01 12:00”);
data = cal.getTime();
System.out.println(“[2007/01/01 12:00] = '”+data+”’”);
System.out.println(“\n—– Tempo apenas ————————“);
// Padrão de HH:mm:ss. *Se for utilizado apenas a hora, adicione a data na frente.
cal = toCalendar(
new SimpleDateFormat(“aaaa/MM/dd”).format(new Date()) +
” 12:00:00″);
data = cal.getTime();
System.out.println(“[12:00:00] = '”+data+”’”);
}
◆Resultado de saída
----- Somente data --------------------------- [2007/01/01] = 'Seg, 01 de janeiro 00:00: 00 JST 2007' [2007-01-01] = 'Seg 01 de janeiro 00:00:00 JST 2007' [20070101] = 'Seg 01 de janeiro 00:00:00 JST 2007' [07-01-01] = 'Seg 01 de janeiro 00:00:00 JST 2007' ----- Data + Hora -------------------------- [01/01/2007 12:00:00] = 'Seg, 01 de janeiro, 12:00:00 JST 2007' [20070101 12:00:00] = 'Seg, 01 de janeiro, 12:00:00 JST 2007' [2007/01/01, 12:00] = 'Seg, 01 de janeiro, 12:00:00 JST 2007' ----- Somente horário --------------------------- [12: 00:00] = 'Quarta, 06 de junho 12:00:00 JST 2007'
Este programa de exemplo é para Chat&Messenger.Função de gerenciamento de calendário/programação”é realmente usado.