Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Szmeby
    tag

    Sziasztok!

    Van egy service progim, ami időnként meghívódik és megnézi hogy az aktuális idő később van-e mint egy fájlban letárolt dátum + intervallum millisecundumban.

    Ez mind szép és jó, de van egy évben 1-1 nap mikor 23 illetve 25 órás egy nap. Ilyenkor a program egy órával hamarabb vagy később fut le. Ettől tudtok szebb/jobb/okosabb megoldást, hogy az intervallumot eltoljam?

    :R

    public int change(Date today, Date yesterday){
    Calendar todayCal = Calendar.getInstance();
    todayCal.setTime(today);

    Calendar yesterdayCal = Calendar.getInstance();
    yesterdayCal.setTime(yesterday);

    boolean todayInDayLightTime = todayCal.getTimeZone().inDaylightTime(today);
    boolean yesterdayInDayLightTime = yesterdayCal.getTimeZone().inDaylightTime(yesterday);

    System.out.println("Yesterday DaylightTime: " + (yesterdayInDayLightTime==true?"Nyari idoszamitas":"Teli idoszamitas"));
    System.out.println("Today DaylightTime: " + (todayInDayLightTime==true?"Nyari idoszamitas":"Teli idoszamitas"));


    if(yesterdayInDayLightTime == true && todayInDayLightTime == false){
    System.out.println("Óra visszallitas -3600");
    return -3600;
    }
    else if(yesterdayInDayLightTime == false && todayInDayLightTime == true){
    System.out.println("Óra eloreallitas +3600");
    return +3600;
    }
    else{
    System.out.println("Nem történt oraatallitas!");
    return 0;
    }
    }

    Joda-time?

    DateTime now = new DateTime();
    DateTime tomorrow = now.plusDays(1);
    if (tomorrow.isAfter(now)) {
    doIt();
    }

    java.util.Date típusra ide-oda tud konvertálni is, ha szükséged van rá.

    Vagy ha nem bírod a 3rd party librarykat, akkor java8 LocalDateTime?

    LocalDateTime.from(new Date().toInstant()).plusDays(1);

    Rengeteget szívhatsz a másodpercek babrálásával. Az, hogy 1 óra 3600 másodperc, pont annyira igaz, mint hogy egy év 365 nap... vagy mint fentebb, hogy 1 nap 24 óra. Általában igaz, kivéve a kivételek esetén. :)
    A daylight-savig csak egy a sok hülyeség közül. Vannak szökőévek, elcsalt másodpercek, időzónák, saját elcseszett DLS megoldásokkal, borzalom.
    Javaslom a jodát, hasznos kis eszköz.

  • Aethelstone
    addikt

    Sziasztok!

    Van egy service progim, ami időnként meghívódik és megnézi hogy az aktuális idő később van-e mint egy fájlban letárolt dátum + intervallum millisecundumban.

    Ez mind szép és jó, de van egy évben 1-1 nap mikor 23 illetve 25 órás egy nap. Ilyenkor a program egy órával hamarabb vagy később fut le. Ettől tudtok szebb/jobb/okosabb megoldást, hogy az intervallumot eltoljam?

    :R

    public int change(Date today, Date yesterday){
    Calendar todayCal = Calendar.getInstance();
    todayCal.setTime(today);

    Calendar yesterdayCal = Calendar.getInstance();
    yesterdayCal.setTime(yesterday);

    boolean todayInDayLightTime = todayCal.getTimeZone().inDaylightTime(today);
    boolean yesterdayInDayLightTime = yesterdayCal.getTimeZone().inDaylightTime(yesterday);

    System.out.println("Yesterday DaylightTime: " + (yesterdayInDayLightTime==true?"Nyari idoszamitas":"Teli idoszamitas"));
    System.out.println("Today DaylightTime: " + (todayInDayLightTime==true?"Nyari idoszamitas":"Teli idoszamitas"));


    if(yesterdayInDayLightTime == true && todayInDayLightTime == false){
    System.out.println("Óra visszallitas -3600");
    return -3600;
    }
    else if(yesterdayInDayLightTime == false && todayInDayLightTime == true){
    System.out.println("Óra eloreallitas +3600");
    return +3600;
    }
    else{
    System.out.println("Nem történt oraatallitas!");
    return 0;
    }
    }

    Időszerver szinkronizálás.

  • axioma
    veterán

    Sziasztok!

    Van egy service progim, ami időnként meghívódik és megnézi hogy az aktuális idő később van-e mint egy fájlban letárolt dátum + intervallum millisecundumban.

    Ez mind szép és jó, de van egy évben 1-1 nap mikor 23 illetve 25 órás egy nap. Ilyenkor a program egy órával hamarabb vagy később fut le. Ettől tudtok szebb/jobb/okosabb megoldást, hogy az intervallumot eltoljam?

    :R

    public int change(Date today, Date yesterday){
    Calendar todayCal = Calendar.getInstance();
    todayCal.setTime(today);

    Calendar yesterdayCal = Calendar.getInstance();
    yesterdayCal.setTime(yesterday);

    boolean todayInDayLightTime = todayCal.getTimeZone().inDaylightTime(today);
    boolean yesterdayInDayLightTime = yesterdayCal.getTimeZone().inDaylightTime(yesterday);

    System.out.println("Yesterday DaylightTime: " + (yesterdayInDayLightTime==true?"Nyari idoszamitas":"Teli idoszamitas"));
    System.out.println("Today DaylightTime: " + (todayInDayLightTime==true?"Nyari idoszamitas":"Teli idoszamitas"));


    if(yesterdayInDayLightTime == true && todayInDayLightTime == false){
    System.out.println("Óra visszallitas -3600");
    return -3600;
    }
    else if(yesterdayInDayLightTime == false && todayInDayLightTime == true){
    System.out.println("Óra eloreallitas +3600");
    return +3600;
    }
    else{
    System.out.println("Nem történt oraatallitas!");
    return 0;
    }
    }

    En lehet hogy forditva csinalnam... nem kovetkeztetni a hossz modositasara, hanem az aktualis datumot visszabontani datumra es idore, datumbol 1 levon (az mar csak egyszerubb, me'g ha honaphataron is van), az idovel egyutt vissza long-ra, es az a tartomany eleje. Ha jol ertem, hogy mit akarsz csinalni (azaz a mai 7:00am lefuttataskor az a lenyeg, hogy a tegnapi - helyi ido szerinti - 7:00am ota eltelt idoszakba beleesest akarod tesztelni).

  • RexpecT
    addikt

    Sziasztok!

    Van egy service progim, ami időnként meghívódik és megnézi hogy az aktuális idő később van-e mint egy fájlban letárolt dátum + intervallum millisecundumban.

    Ez mind szép és jó, de van egy évben 1-1 nap mikor 23 illetve 25 órás egy nap. Ilyenkor a program egy órával hamarabb vagy később fut le. Ettől tudtok szebb/jobb/okosabb megoldást, hogy az intervallumot eltoljam?

    :R

    public int change(Date today, Date yesterday){
    Calendar todayCal = Calendar.getInstance();
    todayCal.setTime(today);

    Calendar yesterdayCal = Calendar.getInstance();
    yesterdayCal.setTime(yesterday);

    boolean todayInDayLightTime = todayCal.getTimeZone().inDaylightTime(today);
    boolean yesterdayInDayLightTime = yesterdayCal.getTimeZone().inDaylightTime(yesterday);

    System.out.println("Yesterday DaylightTime: " + (yesterdayInDayLightTime==true?"Nyari idoszamitas":"Teli idoszamitas"));
    System.out.println("Today DaylightTime: " + (todayInDayLightTime==true?"Nyari idoszamitas":"Teli idoszamitas"));


    if(yesterdayInDayLightTime == true && todayInDayLightTime == false){
    System.out.println("Óra visszallitas -3600");
    return -3600;
    }
    else if(yesterdayInDayLightTime == false && todayInDayLightTime == true){
    System.out.println("Óra eloreallitas +3600");
    return +3600;
    }
    else{
    System.out.println("Nem történt oraatallitas!");
    return 0;
    }
    }

    Az If- else if-ben most látom,hogy fordítva írtam a +-3600-at.

Új hozzászólás Aktív témák