Avatar billede corona10 Nybegynder
11. september 2006 - 12:16 Der er 6 kommentarer og
1 løsning

Heltal konverteres til tidspunkt (GregorianCalendar)

Hej Alle.
Jeg har et tal der repræsenterer #sekunder der er gået siden 1/1 år 1900 kl 00.00.00, fx 3367048480. Jeg vil gerne have dette tal konverteret til YYYY.MM.DD.HH.MM.SS. Dvs tallet ovenfor skulle gerne give 2006.09.11.12.15.XX

Hvordan gør jeg lettest det, dvs uden selv at skulle regne ud hvor mange sekunder der er gået på hvert af de mellemliggende år og tage højde for skuddage, solformørkelser og andet pjat?

På forhånd tak
Avatar billede arne_v Ekspert
11. september 2006 - 12:39 #1
du trækker antal sekunder mellem 1900 og 1970 fra

så ganger du med 1000 for at gå til millisekunder

og så kan du constructe on java.util.Date som så kan bruges til at
sette en Calendar
Avatar billede corona10 Nybegynder
11. september 2006 - 13:11 #2
Jeg gør som følger

//int sum //#sekunder siden 1900
GregorianCalendar newTime = new GregorianCalendar(1900, 0, 0, 0, 0, 0);
GregorianCalendar seventies = new GregorianCalendar(1970, 0, 0, 0, 0);

long old1 = newTime.getTimeInMillis();
long old2 = seventies.getTimeInMillis();
long diff3 = old2 - old1;
diff3 *= 1000l; //#seconds between 1900 and 1970
sum -= diff3;

Date dato = new Date(sum);
Calendar nu = Calendar.getInstance();
nu.setTime(dato);
System.out.println("året er " + nu.get(Calendar.YEAR));

Output:
året er 68030

Hvor fejler jeg???
Avatar billede arne_v Ekspert
11. september 2006 - 13:20 #3
long t = 3367048480;
t = t - diff3;
nu.setTime(new Date(t * 1000));

vil jeg tro
Avatar billede arne_v Ekspert
11. september 2006 - 13:24 #4
package september;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class T {
    public static void main(String[] args) {
        GregorianCalendar newTime = new GregorianCalendar(1900, 0, 0, 0, 0, 0);
        GregorianCalendar seventies = new GregorianCalendar(1970, 0, 0, 0, 0);
        long old1 = newTime.getTimeInMillis();
        long old2 = seventies.getTimeInMillis();
        long diff3 = (old2 - old1) / 1000;
        long t = 3367048480L;
        t = t - diff3;
        GregorianCalendar nu = new GregorianCalendar();
        nu.setTime(new Date(t * 1000));
        System.out.println("året er " + nu.get(Calendar.YEAR));
    }
}
Avatar billede arne_v Ekspert
11. september 2006 - 13:24 #5
jeg havde glemt at dividere med 1000
Avatar billede corona10 Nybegynder
11. september 2006 - 14:45 #6
Glimrende. Jeg siger mange tak for hjælpen.
Har altid skændtes meget med java om tid.
Svar og der er velfortjente point
Avatar billede arne_v Ekspert
11. september 2006 - 14:47 #7
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester