Avatar billede mr_mudderkode Nybegynder
18. juli 2002 - 13:26 Der er 13 kommentarer og
2 løsninger

Tid

Jeg har modtaget et vilkårligt tidspunkt i formatet:
Thu, 30-Jul-2002 11:25:56 GMT

Det vil jeg nu gerne have omregnet til X sekunder fra nu.

Så er spørgsmålet bare hvordan? :-)
Avatar billede disky Nybegynder
18. juli 2002 - 13:36 #1
Dit Date objekt hedder dao siger jeg:

så gør du:

Date nu=new Date(); //klokken lige nu

long forskel=(nu.getTime()-dato.getTime())/1000;

'forskel' indeholder nu forskellen i sekunder.
Avatar billede disky Nybegynder
18. juli 2002 - 13:37 #2
ikke dao men 'dato' :-)
Avatar billede disky Nybegynder
18. juli 2002 - 13:39 #3
i dit tilfælde bliver forskellen negativt da mit eksempel regner antal sekunder der er gået siden, men du kan bare bytte rundt
Avatar billede carstenknudsen Nybegynder
18. juli 2002 - 13:47 #4
Du konverterer til et Date objekt som her1
Date dato = new Dato("Thu, 30-Jul-2002 11:25:56 GMT");
og så kan du bruge
long X = 5425;
long t = dato.getTime()+X;
Date nyDato = new Date( t );
Avatar billede carstenknudsen Nybegynder
18. juli 2002 - 13:51 #5
Der skulle stå 1000*X i stedet for
X i næstsidste linie, undskyld.
Avatar billede mr_mudderkode Nybegynder
18. juli 2002 - 14:01 #6
Ok. Måske jeg var lidt mangelfuld i min forklaring.

Ovennævnte dato har jeg "kun" som en streng. Så går jeg ud fra der skal et eller andet ekstra trin på for at få den konverteret til et datoobjekt?
Avatar billede carstenknudsen Nybegynder
18. juli 2002 - 14:03 #7
Det står i mit svar. Du kan bare proppe
strengen ind.
Avatar billede disky Nybegynder
18. juli 2002 - 14:10 #8
Carsten:
Dine java bøger må være meget forældet den Date constuctor du bruger har været deprecated sin jdk 1.1 !



mr_mudderkode:

Den korrekte løsning som endda parser din input streng og ikke er deprecated er:

/*
* Udregn.java
*
* Created on 18. juli 2002, 14:01
*/
import java.text.*;
import java.util.*;

/**
*
* @author  Reinke
* @version
*/
public class Udregn
{
   
    /** Creates new Udregn */
    public Udregn()
    {
        SimpleDateFormat sdf=new SimpleDateFormat("EEE dd-MMM-yyyy HH:mm:ss Z",Locale.US);
        try
        {
            //EEE, dd MMM yyyy HH:mm:ss Z"  Wed, 4 Jul 2001 12:08:56 -0700 
            Date dato=sdf.parse("Thu 30-Jul-2002 11:25:56 GMT");
           
            Date nu=new Date();
           
            long forskel=(dato.getTime()-nu.getTime())/1000;
            System.out.println("Forskel i sekunder = "+forskel);
        }
        catch(ParseException e)
        {
            e.printStackTrace();
        }
    }
   
    /**
    * @param args the command line arguments
    */
    public static void main(String args[])
    {
        new Udregn();
    }
   
}
Avatar billede carstenknudsen Nybegynder
18. juli 2002 - 14:32 #9
disky: de er nu ikke forældede, tværom, men
jeg kører den slags småproblemer via
reflection det er langt hurtigere, og det
giver selvfølgelig ikke warnings ang.
mulig deprecation. Tilgengæld læste jeg
spørgsmålet før jeg svarede:) Dit program
regner ikke X sekunder frem (eller tibage).
Avatar billede disky Nybegynder
18. juli 2002 - 14:35 #10
carsten:
Når jeg siger de er forældede er det fordi at de er det !

Læs API'en:
Date(String s)
          Deprecated. As of JDK version 1.1, replaced by DateFormat.parse(String s).

Og du mener stadigvæk ikke det er forældet ??

Prøv at læs mit svar inden du udtaler dig om jeg har læst det eller ej.
Mit lange svar er den korrekte måde at løse problemmet på. Forresten Reflection er rent performance mæssigt set en særdeles dårlig løsning, det er langsomt.
Avatar billede carstenknudsen Nybegynder
18. juli 2002 - 14:45 #11
disky: så falder du lige ned engang. Du har
overhovedet ikke læst hvad jeg skrev.
1) Jeg har ikke påstået at den ikke er deprecated,
blot at jeg ikke havde det problem da jeg
udførte kommandoen via reflection.
2) Jeg skrev ikke at jeg ville løse problemet
via reflection, blot at jeg har en lille
interaktiv reflection parser hvor jeg kan
instantiere objekter og kalde metoder på for
at afprøve dem, det er langt mere effektivt
til små problemer man lige har end at skrive
og compilere en nyt java program hver gang
noget skal afprøves.
3) Jeg havde læst dit første indlæg og der
svarede du ikke på problemet, det var præcis
det jeg udtalte mig om, og ikke andet.
4) Slap lidt af.
Avatar billede mr_mudderkode Nybegynder
18. juli 2002 - 14:57 #12
Jeg vil holde mig ude af diskussionen om hvad der er ret og hvad der er vrang.

Jeg har fået det til at virke med disky's forslag, men smider en smule point af til ck for arbejdet.... Så håber jeg det er tilfredsstillende....?
Avatar billede disky Nybegynder
18. juli 2002 - 14:59 #13
Du skriver:
de er nu ikke forældede, tværom, men
jeg kører den slags småproblemer via
reflection det er langt hurtigere:

Altså du siger metoderne ikke er forældet, derefter at det er de bestemt ikke. Så slutter du af med at reflection er langt hurtigere.

Okay svar #2 forklarer en hel del, men det var ikke det man kunne tolke ud fra dit første svar.

Så please skriv det du vil sige så andre forstår ordlyden af det, det ville løse mange problemmer. :-)
Bortset fra det synes jeg bestemt ikke det er langsomt at lave det lille program i Forte og teste det, og man bliver gjort opmærksom på forældede metoder.

#3: okay de 3 første postings var mere end 10 min før du svarede, så tid til at læse har du haft rigeligt af :-)

#4: Jeg gør aldrig andet :)
Avatar billede disky Nybegynder
18. juli 2002 - 15:02 #14
mr:
Det er helt fint med mig :)
Avatar billede carstenknudsen Nybegynder
18. juli 2002 - 15:09 #15
Kommentaren ang. forældede var til BØGERNE,
ikke ang. deprecation af metoder, det har
jeg ikke påstået de ikke var.
Reflection er hurtigere til at afprøve
småkode, ikke i runtime udførsel, det siger sig
selv.
#3 jeg reloader ikke hvert femte sekund:)
lige præcis den kommentar den rammer mest
en anden.
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