Date, Calendar

Ninni__

Moi,

Mulla on tällainen metodi...

public static String dateToString(Date date, String pattern) {
try {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
SimpleDateFormat df = new SimpleDateFormat(pattern);
return df.format(cal.getTime());
} catch (Exception e) {
}
return "";
}

Tuo näyttäisi palauttavan lopputuloksessa kuukauden väärin, yhtä pienempänä kuin pitäisi. (Eli siinä muodossa, jossa kuukausi ilmeisesti on indeksoituna Date-oliossa.) Mitenköhän näitä tilanteita kuuluisi hoitaa? Tuntuu todella kömpelöltä korjaukselta lisätä kuukausi ylimääräistä ennen formatia.

Onko normaalia, että Calendar ja Date toimii näin huonosti yhteen, vai onko taas käyttäjässä vika?

2

102

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • FoobarFoo

      Hieman vaikeasti tuntuu menevän, koska metodin voi käytännössä yhdellä rivillä:

      public static String dateToString(Date date, String pattern) {
      return new SimpleDateFormat(format).format(pattern);
      }
      ja testi
      public void testFormatting(){
      Formater formater = new Formater();
      String result = formater.dateToString(Calendar.getInstance().getTime(), "dd.MM.yyyy");
      assertEquals("20.07.2011", result);
      }

      • foobarfoo

        Ylempään luokkaan jäi näemmä static-sana. Mutta tälläisenä yleisenä hyvänä(tm) neuvona:
        1. Vältä staattisia metodeja aina kun voit (eli käytännössä aina). Teet vaan testaamisesta hankalampaa.
        2. Älä koskaan ja ikinä catchaa kaikkia poikkeuksia (Exception), varsinkaan kun tee mitään merkintää siitä että tapahtui poikkeus. DateFormater heittää IllegalArgumentException, jollei se ymmärrä haluta pvm-muotoa. NullPointterin-Exception catchaaminen on siinä ja siinä.
        PS. Olisit tehnyt väärin jos olisit alkanut lisää tuossa dateToString-metodissa kuukausia tuohon date-olioon. Harjoitteluksi saat selvittää että miksi:)


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Mihin Ilkka Kanerva kuoli?

      Kun näin jokin aika sitten kuvan riutuneen näköisestä Kanervasta, sanoin vaimolle että haimasyövältä vaikuttaa. Vaimon isä oli kuollut kyseiseen tauti
      Maailman menoa
      265
      17118
    2. Oho! Susanna Laine uudessa hiustyylissä - Julkkismeikkaajalta tiukka palaute: "Ihan sama..."

      Ex-Salkkarit tähti ja juontaja Susanna Laine on monessa mukana. Ex-missi tunnetaan pitkistä, vaaleista hiuksistaan . Mitäs tykkäät uudesta hiustyylist
      Kotimaiset julkkisjuorut
      23
      5517
    3. Ilkka kanerva

      Ilkka Kanerva kuollut 74v
      Turku
      115
      2592
    4. Yllätyspaljastus: Poppari Robin Packalen kiittää urastaan iskelmätähti Juha Tapiota: "Jos mä en..."

      Oi, mikä tarina. Juha Tapio ja Robin ovat kyllä symppiksiä molemmat. Kumpi heistä on suosikkisi? https://www.suomi24.fi/viihde/yllatyspaljastus-poppar
      Kotimaiset julkkisjuorut
      15
      2076
    5. Venäjän lippulaiva Moskva upotettu Mustallamerellä

      Venäjän laivaston lippulaiva Mustalalmerellä on 180 m pituinen, Neuvostoliiton aikana rakennettu Moskva-niminen risteilijä. Ukraina ilmoitti eilen saa
      Maailman menoa
      336
      1775
    6. Pikkaraiskan puhelut

      Mitä tuo jätkä hakee sillä että julkaisee kuinka kauan on puhunut puhelimessa? Tekee itsestään vieläkin idiootimman tuolla vai mikä tää juttu?
      Kotimaiset julkkisjuorut
      111
      1007
    7. Ilkka Kanerva on kuollut

      74-vuotiaana.
      Maailman menoa
      59
      959
    8. Sofia Belorf ja Sonja Aiello

      Viihtyvät yhdessä dinnerillä. Pienet piirit. Mitä ajatuksia herättää ?
      Kotimaiset julkkisjuorut
      45
      899
    9. Hossein Najaf juotti lapset humalaan ja käytti häikäilemättä hyväkseen

      Keski-Suomen käräjäoikeus on tuominnut 60-vuotiaan Hossein Najafin neljän vuoden vankeusrangaistukseen. Ensimmäisen tytön kanssa hän oli useita kerto
      Maailman menoa
      32
      897
    Aihe