moi,
kuinka saan ohjelmassani haettua koneen kellosta
päivämäärän, muodossa pp.kk.vvvv?
onko char-merkkijono?
__DATE__, joka tulostaa käännöspäivän on muodossa
esim. tämä päivä Feb 24 2005, pitäis saada se muotoon
pp.kk.vvvv
Neljännen C-oppaan esimerkin avulla saanet aikaan toimivan koodin.
time_t nyt; /* sekuntiluku */ struct tm *aika; /* päivämäärätietue */ time(&nyt); /* haetaan tämänhetkinen päivämäärä */ aika = localtime(&nyt); /* muutetaan päivämäärä järkevään muotoon */ printf("Nyt on %i.%i.%i \n", aika->tm_mday, aika->tm_mon + 1, 1900 + aika->tm_year);
tämä tulostaa päivämäärän 24.2.2005.
kuinka saisin noi pilkut pois ja kuukauteen yhden nollan eteen jos vain ykkösiä, eli 02?
tarkoitus olisi kääntää päivämäärä toisinpän, siis näin
20050224.
mulla tohon käännökseen oma for luuppi joka tekee sen ilman pilkkuja, eli char [9]
No mietipähän vaikka jos muuttaisit ton printf:n muuttujien järjestystä ja silleen. o_O
moi,
Nää on inttejä kaikki ja ne pitäis muuttaa yhdeksi char-muuttujaksi. eli tarkoitan sitä, että olisi vain yksi
char-muuttuja, jota verrataan toiseen char-muuttujaan.
Siis minulla tilaus-tietueessa toimituspäivä, ja ohjelma tulostaa ne tilaukset, joita ei vielä ole toimitettu.
Toimituspäivää verrataan koneen kellon antamaan päivään.
Tohon edelliseen kysymykseeni vielä. toi tejeez:in vastaus
ei poista pilkkuja, eikä lisää kuukauteen sitä tarvittavaa nollaa, jos vain kuukaudessa ykkösiä (kk 2 ---> kk 02).
luultavasti sama pitää olla päivässäkin(jos vain ykkösiä)
Kuten tejeez jo sanoi, pilkut saa pois muuttamalla printf-funktion muotoilulauseketta "%i.%i.%i". %-merkki tarkoittaa, että siihen kohtaan tulee jokin muuttuja (i=int, s=merkkijono, c=yksittäinen merkki, d=liukuluku). Pisteet tässä muotoilussa ovat mukana selkeyden kannalta, "%i%i%i" tulostaisi kaiken yhteen pötköön (esim. 2.5.2005 -> "252005"). Nollia muotoilun alkuun saa kirjoittamalla muotoiluun enne tunnistetta minimipituuden. Kokonaisluvuilla minimipituuden muut kohdat täytetään nollilla, jos luvun pituus on alle minimipituuden. Loput muotoiluasetukset löytyvät kait helpistä.
time_t nyt; /* sekuntiluku */ struct tm *aika; /* päivämäärätietue */ time(&nyt); /* haetaan tämänhetkinen päivämäärä aika = localtime(&nyt); /* muutetaan päivämäärä järkevään muotoon */ /* 'normaali' */ printf("Nyt on %i.%i.%i \n", aika->tm_mday, aika->tm_mon + 1, 1900 + aika->tm_year); /* pötkö */ printf("ja toisin sanoen <%04i.%02i.%02i> \n", 1900 + aika->tm_year, aika->tm_mon + 1, aika->tm_day);
kiitos avuistanne, ratkaisin ongelman hiukan erillailla.
Oli tarkoituskin saada päiväys yhteen pötköön, sillä sitä pitää vertailla tilaustietueen toimituspäivämäärään.
koodi vielä kääntää päivämäärän, esim tämä päivä 24.02.2005---->
20050224-->tätä kivempi vertailla toiseen samanmoiseen päivään.
size_t i; struct tm tim; /* päivämäärätietue */ time_t now; now = time(NULL);// haetaan aika tim = *(localtime(&now));// käännä aikatietueeksi i = strftime(s,11,"%d.%m.%Y",&tim);// muotoillaaan tm struktuuri merkkijonoksi printf("Tanaan on: %s\n\n", s); for (i=0; i<9; i++) { int j = paikat[i]; // halutun (i:nnen) merkin paikka tamapva[i] = s[j]; }
Aihe on jo aika vanha, joten et voi enää vastata siihen.