Data, Hora e RMS

Boa Noite a todos.

Estou tendo uma dificuldade incrivel em mostrar na tela do dispositivo, a hora e a data da forma correta. O problema maior é que quero armazenar no rms a data e a hora correta e não estou conseguindo.

ai vai parte do código

Calendar cal = Calendar.getInstance();

                cal.setTime(new Date(InsereData.getDate().getTime()));
                cal.setTime(new Date(InsereHora.getDate().getTime()));

                int ano = cal.get(Calendar.YEAR);
                int mes = cal.get(Calendar.MONTH) + 1;
                int dia = cal.get(Calendar.DAY_OF_MONTH);

                int h = cal.get(Calendar.HOUR_OF_DAY);
                int m = cal.get(Calendar.MINUTE);
                int s = cal.get(Calendar.SECOND);

                System.out.println("" + (dia < 10 ? "0" + dia : "" + dia) + "/" + (mes < 10 ? "0" + mes : "" + mes) + "/" + ano);
                System.out.println("" + (h < 10 ? "0" : "") + h + ":" + (m < 10 ? "0" : "") + m + ":" + (s < 10 ? "0" : "") + s);

                data = ("" + (dia < 10 ? "0" + dia : "" + dia) + "/" + (mes < 10 ? "0" + mes : "" + mes) + "/" + ano);
                hora = ("" + (h < 10 ? "0" : "") + h + ":" + (m < 10 ? "0" : "") + m + ":" + (s < 10 ? "0" : "") + s);

                registro = new Registro(InsereMedida.getString(), data, hora);
                RegistroDB.addRegistro(registro);

Agora no outro arquivo acontece:

public static void addRegistro(Registro registro) {
        byte[] completo = mergeRegistro(registro).getBytes();
        try {
            openDatabase();
            rs.addRecord(completo, 0, completo.length);
            closeDatabase();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Ai quando quero ver na tela o dia e a hora q foi gravado o registro aparecem aquela string enorme

else if (displayable == VisualizaRegistros) {
            if (command == anterior_VisuRegis) {
                // write pre-action user code here              
                if (registroAtual > 1) {
                    registroAtual--;
                    numRegis.setText(registroAtual + "/" + String.valueOf(RegistroDB.getNumeroRegistro()));
                    registro = RegistroDB.getRegistro(registroAtual);
                    VisualizaMedida.setText(registro.getMedida());
                    VisualizaData.setText(registro.getData());
                    VisualizaHora.setText(registro.getHora());
                }
 
            // write post-action user code here
            } 

Quando eu salvo, mando imprimir no console e aprece

01/01/1970
22:07:00

Quando mando visualizar na tela no dispositivo:

javax.microedition.lcdui.DateField@1cb37664
javax.microedition.lcdui.DateField@f828ed68

Como resolver isto? Eu quero que seja gravado no RMS o formato 00/00/00 e 00:00:00… para que quando eu mande exibir na tela, apareça desta forma…

alguma ajuda???

Obrigada.

Apenas para esclarecer melhor vou colocar as clsses basicas

public class Registro {

    private String medida;
    private String data;
    private String hora;

    /** Creates a new instance of Contato */
    public Registro() {
    }

    public Registro(String medida, String data, String hora) {
        this.medida = medida;
        this.data = data;
        this.hora = hora;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    public void setHora(String hora) {
        this.hora = hora;
    }

    public String getHora() {
        return hora;
    }

    public void setMedida(String medida) {
        this.medida = medida;
    }

    public String getMedida() {
        return medida;
    }
}

A outra classe é:

import java.io.*;
import javax.microedition.rms.*;

/**
 *
 * @author Administrador
 */
public class RegistroDB {

    private static RecordStore rs = null;

    public static void deleteDatabase() {
        try {
            RecordStore.deleteRecordStore("RegistroDB");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void openDatabase() {
        if (rs == null) {
            try {
                rs = RecordStore.openRecordStore("RegistroDB", true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    private static void closeDatabase() {
        if (rs != null) {
            try {
                rs.closeRecordStore();
                rs = null;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static void addRegistro(Registro registro) {
        byte[] completo = mergeRegistro(registro).getBytes();
        try {
            openDatabase();
            rs.addRecord(completo, 0, completo.length);
            closeDatabase();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static String mergeRegistro(Registro registro) {
        return registro.getMedida() + "#" + registro.getData() + "#" + registro.getHora();
    }

    private static Registro parseRecord(byte[] record) {
        String medida, data, hora, completo = new String(record);
        int contador = 0, indiceCadeia = 0;
        int[] cadeia = new int[2];

        for (contador = 0; contador < completo.length(); contador++) {
            if (completo.charAt(contador) == '#') {
                cadeia[indiceCadeia] = contador;
                indiceCadeia++;
            }
        }
        medida = completo.substring(0, cadeia[0]);
        data = completo.substring(cadeia[0] + 1, cadeia[1]);
        hora = completo.substring(cadeia[1] + 1, completo.length());
                
        System.out.println(data);
        System.out.println(hora);       

        return new Registro(medida, data, hora);

    //data, hora);
    }

    public static Registro getRegistro(int posicao) {
        byte completo[] = null;
        try {
            openDatabase();
            completo = rs.getRecord(posicao);
            closeDatabase();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return parseRecord(completo);
    }

    public static int getNumeroRegistro() {
        int numeroRegistros = -1;
        try {
            openDatabase();
            numeroRegistros = rs.getNumRecords();
            closeDatabase();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return numeroRegistros;
    }

    public static void deletarRegistro(int posicao) {
        try {
            openDatabase();
            rs.deleteRecord(posicao);
            closeDatabase();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Olá eu faço assim:

    public String dataHora(){
        //recupera data e hora atual do sistema
        Calendar cal = Calendar.getInstance( );
        Date date = new Date( );
        cal.setTime(date);
        String mes     = String.valueOf( cal.get(Calendar.MONTH) + 1 );
        String dia     = String.valueOf( cal.get(Calendar.DAY_OF_MONTH) );
        String ano     = String.valueOf( cal.get(Calendar.YEAR) );        
        String horas   = String.valueOf( cal.get(Calendar.HOUR_OF_DAY) );
        String minutos = String.valueOf( cal.get(Calendar.MINUTE) );        
        String segundos= String.valueOf( cal.get(Calendar.SECOND) );
        //
        cal = null;
        date= null;
        //
        //formata a data de modo que o tamanho do resultado seja sempre fixo
        //dia
        if (dia.length() < 2){
            dia = "0" + dia;
        }        
        //mes
        if (mes.length() < 2){
            mes = "0" + mes;
        }        
        //horas
        if (horas.length() < 2){
            horas = "0" + horas;
        }
        //minutos
        if (minutos.length() < 2){
            minutos = "0" + minutos;
        }
        //segundos
        if (segundos.length() < 2){
            segundos = "0" + segundos;
        }
        //
        return dia + "/" + mes + "/" + ano + " " + horas + ":" + minutos + ":" + segundos;
    }

Ai apenas adiciono o retorno no meu registro antes de salva-lo no RMS.

Obrigada por sua resposta

mas isto ainda não resolve meu problema

conforme seu código, o dia e a hora está sendo pega do sistema

eu quero pegar a hora e a data que o usuário escolhe no datefield e salvá-las já convertidas no RMS

continuo ainda com o mesmo problema

obrigada mesmo assim

Bom, fiz algumas mudanças e consegui através da sua ajuda

Muito Obrigada por seu conselho

Espero poder ajudar outras pessoas aqui no fórum também

já coloco aki a resposta do problema :slight_smile:

até

Opa, fico feliz que tenha conseguido…