Pessoal, preciso converter em uma data e hora um valor que possuo em segundos desde de 1970.
Por exemplo sei que [telefone removido] representa algo aproximado de 28/11/2008 12:15:03.
Possuo uma rotina em Delphi, onde acho a quantidade de dias, e utilizo uma função nativa do delphi DecodeDate, e encontro a data e a hora.
Alguem pode me ajudar ou me informar como realizar essa conversão em Java.
packagecom.superlocar.model;importjava.util.Calendar;importjava.util.Date;publicclassTemp{publicstaticvoidmain(String[]args){longmilisec=1227885063L*1000;//seu tempo em segundos x 1000 para milisecsSystem.out.println(newDate(get1970()+milisec));}/** * Retorna 1970 em milisegundos * @return */publicstaticlongget1970(){Calendarano1970=Calendar.getInstance();ano1970.set(Calendar.YEAR,1970);ano1970.set(Calendar.MONTH,0);ano1970.set(Calendar.DAY_OF_MONTH,1);ano1970.set(Calendar.HOUR_OF_DAY,0);ano1970.set(Calendar.MINUTE,0);ano1970.set(Calendar.SECOND,0);ano1970.set(Calendar.MILLISECOND,0);returnano1970.getTimeInMillis();}}
saida do console foi
Fri Nov 28 15:11:03 GMT-03:00 2008
Lavieri
refatorando o ultimo código
importjava.text.DateFormat;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;publicclassTemp{publicstaticvoidmain(String[]args){DateFormatdf=newSimpleDateFormat("dd/MM/yyyy hh:mm:ss");System.out.println(df.format(getDate(1227885063L)));//saido do console = 28/11/2008 03:11:03}/** * Retorna 1970 em milisegundos * @return */publicstaticlongget1970(){Calendarano1970=Calendar.getInstance();ano1970.set(Calendar.YEAR,1970);ano1970.set(Calendar.MONTH,0);ano1970.set(Calendar.DAY_OF_MONTH,1);ano1970.set(Calendar.HOUR_OF_DAY,0);ano1970.set(Calendar.MINUTE,0);ano1970.set(Calendar.SECOND,0);ano1970.set(Calendar.MILLISECOND,0);returnano1970.getTimeInMillis();}/** * Retorna uma data a partir dos segundos decorridos apos 1970 * @param timeInSecs tempo decorrido apos 1970 * @return */publicstaticDategetDate(longtimeInSecs){longmilisec=1227885063L*1000;//seu tempo em segundos x 1000 para milisecsreturnnewDate(milisec+get1970());// milisec + milisec1970}}
Conhecimento é tudo O.o
Só complementando, são os mili-segundos configurados na bios/relógio do SO. A conta que vem desde 01/01/1970 00:00 UTC é o padrão UNIX, o que nos lembra que ninguém gosta de seguir padrões. Um dia você vai estar testando Smalltalk e vai ficar espantado com a diferença entre as contagens do Java e Smalltalk ( que começa a contar de 01/01/1901 ).
Isso é o inferno em C, pois depedendo do compilador/plataforma em que você trabalha é um formato diferente. Mais em: