Pakko kysyä kun ei onnistu. Tietokanta palauttaa päivämäärän stringinä muodossa vvvvkkpp ja se pitäisi saada muotoon pp.kk.vvvv mutta en tiedä miten sen saan tehtyä. Luulin jo keksineeni kun löysin "subSequence":n. Mutta esim. muuttuja.subSequence(0,4) kaataa ohjelman?!?! Delphillä nämä stringijutut on lasten leikkiä...
Onkohan se muuttuja edes tekstimuotoinen vai esimerkiksi luku tai jokin päivämäärää kuvaava olio? Olion tyypin kertoo println(muuttuja.javaClass.kotlin)
. Voit sitten etsiä kyseiselle tyypille sopivia ratkaisuja. Tekstin kohdalla kyllä subSequence toimii täysin oikein, esimerkiksi println("12345678".subSequence(0,4))
tulostaa merkkijonon "1234".
Mielestäni on ja tallennan se String muotoiseen muuttujaan ja vaikka teen mitä toString juttuja aina kaatuu?!? No, saan sen tulenmaan palvelimelta suoraan oikeassa muodissa joten tämä ongelma on kieretty...
Auttaisi syyn tietämistä, jos kertoisit mihin poikkeukseen se kaatuu.
Myös koodin näyttäminen ongelmakohdasta olisi hyödyksi.
Päivämääriä ja lukujahan ei sitten muotoilla räpeltämällä jollain subSequencella vaan käyttämällä lokalisointikirjastoa.
The Alchemist kirjoitti:
Päivämääriä ja lukujahan ei sitten muotoilla räpeltämällä jollain subSequencella vaan käyttämällä lokalisointikirjastoa.
Mitenkäs tämän lokalisoisit?
Tämäkin kaataa:
val apu = json.getJSONObject(i).getString("PVM").toString() val apu1 = LocalDate.parse(apu, DateTimeFormatter.ofPattern("dd.MM.yyyy", Locale.ENGLISH))
Pelkkä apu tulee listViewiin oikein (mutta siis väärässä muodossa).
Varmaankin suunnilleen tolleen, mutta pitäisi varmaan laittaa oikea muoto tuohon jälkimmäiseen. Nyt sinulla on (kertomasi peruteella) päivämäärä muodossa yyyyMMdd ja sitten kerrot ohjelmalle, että haluat lukea dd.MM.yyyy -muodossa olevan päivämäärän.
Tietokone tyypillisesti tekee juuri niin kuin käsketään, eli kun antaa järjettömiä käskyjä niin homma ei toimi.
Tuossahan siis vasta luet merkkijonon päivämääräksi, ja muotona pitäisi olla yyyyMMdd, kuten Grez juuri sanoi. Sitten pitää vielä tehdä muunnos toiseen suuntaan eli päivämääräoliosta takaisin merkkijonoksi haluamassasi muodossa. The Alchemistin tarkoittamaa lokalisointia olisi se, että muodon "dd.MM.yyyy" sijasta käyttäisit paikallista muotoa jotenkin tähän tapaan:
import java.time.LocalDate import java.time.format.DateTimeFormatter import java.time.format.FormatStyle fun main() { val pvm_data = "20190526" // json.getJSONObject(i).getString("PVM").toString() val pvm_olio = LocalDate.parse(pvm_data, DateTimeFormatter.ofPattern("yyyyMMdd")) val pvm_teksti = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).format(pvm_olio) println(pvm_teksti) }
KIITOS hyvästä esimerkistä. Näin sitä oppii ehkä parhaiten. Toisaalta teitä osaajia turhauttaa antaa näin selkeitä vastauksein. Ongelma on nyt tuo json datan tyyppi tai joku. Tämäkin kaataa sovelluksen. En osaa AndroidStudiota vielä käyttää kovin hyvin joten tyydyn että muutan palvelimen tuottamaa dataa jotta pvm on hyvännäköinen...
Aihe on jo aika vanha, joten et voi enää vastata siihen.