Pessoal, preciso converter em uma data e hora um valor que possuo em segundos desde de 1970.
Por exemplo sei que 1227885063 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.
public class Temp {
public static void main(String[] args) {
long milisec = 1227885063L*1000; //seu tempo em segundos x 1000 para milisecs
System.out.println(new Date(get1970() + milisec));
public class Temp {
public static void main(String[] args) {
DateFormat df = new SimpleDateFormat(“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
*/
public static long get1970() {
Calendar ano1970 = 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);
return ano1970.getTimeInMillis();
}
/**
* Retorna uma data a partir dos segundos decorridos apos 1970
* @param timeInSecs tempo decorrido apos 1970
* @return
*/
public static Date getDate(long timeInSecs) {
long milisec = 1227885063L*1000; //seu tempo em segundos x 1000 para milisecs
return new Date(milisec + get1970()); // milisec + milisec1970
}
Conhecimento é tudo O.o[/quote]
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: