Como um java.util.Calendar recebe uma data em texto?

3 respostas
aorocha

Pessoal como faço para java.util.Calendar receba uma data em String no formato “31/12/2006”.

3 Respostas

glaucioguerra

Dá um olhada na documentação:

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html

Pesquisa no próprio forum onde já foram postadas dezenas de dúvidas semelhantes a sua.

T
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Calendar;

class String2Calendar {
    public static void main(String[] args) {
        DateFormat df = new SimpleDateFormat ("dd/MM/yyyy");
        df.setLenient (false);
        Date dt = null;
        try { dt = df.parse ("31/12/2006"); } catch (ParseException ex) {
            System.out.println ("Data inválida. ");
            System.exit (1);
        }
        Calendar cal = Calendar.getInstance();
        cal.setTime (dt);
        //-- Imprimir um Calendar com toString não é muito útil. Exemplo:
/*
java.util.GregorianCalendar[time=1167530400000,areFieldsSet=true,areAllFieldsSet
=true,lenient=true,zone=java.util.SimpleTimeZone[id=America/Sao_Paulo,offset=-10
800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=9,
startDay=8,startDayOfWeek=1,startTime=0,startTimeMode=0,endMode=3,endMonth=1,end
Day=15,endDayOfWeek=1,endTime=0,endTimeMode=0],firstDayOfWeek=2,minimalDaysInFir
stWeek=1,ERA=1,YEAR=2006,MONTH=11,WEEK_OF_YEAR=53,WEEK_OF_MONTH=5,DAY_OF_MONTH=3
1,DAY_OF_YEAR=365,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=5,AM_PM=0,HOUR=0,HOUR_OF_DA
Y=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-10800000,DST_OFFSET=3600000]
 */        
        System.out.println (cal);
        //-- Isto imprime algo como "Sun Dec 31 00:00:00 BRST 2006"
        System.out.println (cal.getTime());
        //-- Isto imprime "31/12/2006"
        System.out.println (df.format (cal.getTime()));
    }
}
P

tenhu uma classe muit boa que eu uso sempre...
ela é limpa clara e objetiva, retorna datas horas e tod mais no formato q quiser

import java.util.Calendar;

public class myCalendar {
    
    private Calendar calendar;
    
    /** Creates a new instance of myCalendar */
    public myCalendar() {
         calendar = Calendar.getInstance();
    }
    
    public String getData() {
        String diaSemana, diaMes, mes, ano, hora;
        
        diaSemana = getDiaSemana();
        diaMes = getDia();
        mes = getMes();
        ano = getAno();
        hora = getTime();
        
        return diaSemana+", "+diaMes+" de "+mes+" de "+ano+", "+hora+" horas";
    }
    
    public String getDataSimples() {
        String diaSemana, diaMes, mes, ano, hora;
        
        
        diaSemana = getDiaSemana().substring(0,3);
        diaMes = getDia();
        mes = getMes().substring(0,3);
        ano = getAno();
        hora = getTime();
        
        return diaSemana+", "+diaMes+" "+mes+" "+ano+", "+hora+" hs";
    }
    
    public String getDataNum() {
    	return getDia()+"/"+getMesNum()+"/"+getAno();
    }
    
    public String getTime() {
        String hora = getHora();
        String minuto = getMinuto();
        String segundo = getSegundo();
        
        if (hora.length()<2) hora = "0" + hora;
        if (minuto.length()<2) minuto = "0" + minuto;
        if (segundo.length()<2) segundo = "0" + segundo;
        
        return hora+":"+minuto+":"+segundo;
    }
        
    public String getHora() {
    	return Integer.toString(calendar.get(Calendar.HOUR_OF_DAY));
    }
    
    public String getMinuto() {
    	return Integer.toString(calendar.get(Calendar.MINUTE));
    }
    
    public String getSegundo() {
    	return Integer.toString(calendar.get(Calendar.SECOND));
    }
    
    public String getDiaSemana() {
        String dia = "";
        switch (calendar.get(Calendar.DAY_OF_WEEK)) {
            case 1:
                dia = "Domingo";
                break;
            case 2:
                dia = "Segunda-Feira";
                break;
            case 3:
                dia = "Terça-Feira";
                break;
            case 4:
                dia = "Quarta-Feira";
                break;
            case 5:
                dia = "Quinta-Feira";
                break;
            case 6:
                dia = "Sexta-Feira";
                break;
            case 7:
                dia = "Sábado";
        }
        return dia;
    }
    
    public String getDia() {
    	return Integer.toString(calendar.get(Calendar.DAY_OF_MONTH));
    }
    
    public String getMesNum() {
    	return Integer.toString(calendar.get(Calendar.MONTH)+1);
    }
    
    public String getMes() {
        String mes = "";
        
        switch (calendar.get(Calendar.MONTH)) {
            case 0:
                mes = "Janeiro";
                break;
            case 1:
                mes = "Fevereiro";
                break;
            case 2:
                mes = "Março";
                break;
            case 3:
                mes = "Abril";
                break;
            case 4:
                mes = "Maio";
                break;
            case 5:
                mes = "Junho";
                break;
            case 6:
                mes = "Julho";
                break;
            case 7:
                mes = "Agosto";
                break;
            case 8:
                mes = "Setembro";
                break;
            case 9:
                mes = "Outubro";
                break;
            case 10:
                mes = "Novembro";
                break;
            case 11:
                mes = "Dezembro";
                break;
        }
        
        return mes;
    }
    
    public String getAno() {
    	return Integer.toString(calendar.get(Calendar.YEAR));
    }
    
}
Criado 26 de maio de 2006
Ultima resposta 26 de mai. de 2006
Respostas 3
Participantes 4