Miten Java:lla kovertoidaan tunnin desimaalinumero millisekunneiksi?
Esim. jos se on 1.5 (siis 1 tunti ja 30 minuttia) tai vaikka 1.25 (siis 1 tunti ja 15 minuuttia)?
En löytänäyt Googlettamlla oikeaa vastausta tähän asiaan.
walkout_ kirjoitti:
Miten Java:lla kovertoidaan tunnin desimaalinumero millisekunneiksi?
Esim. jos se on 1.5 (siis 1 tunti ja 30 minuttia) tai vaikka 1.25 (siis 1 tunti ja 15 minuuttia)?
Tunnissa on 60 * 60 * 1000 = 3 600 000 millisekuntia.
Tunnit konvertoidaan siis millisekunneiksi kertomalla luku 3 600 000:lla.
Eli esim. 1,5 * 3600000 = 5400000
walkout_ kirjoitti:
En löytänäyt Googlettamlla oikeaa vastausta tähän asiaan.
Kokeilin myös googlettaa ja löytyi oikein helposti:
https://www.google.com/search?q=1h in ms
Sinänsä toki asian voisi tehdä myös käyttäen esim. Duration tai Period -luokkia, mutta nämä näyttävät ottavan vain kokonaislukutunteja, joten niistä ei ole vastaavaa hyötyä.
Juu, desimaaliluku kerrotaan 60, niin saat minuutit, ja Javassa aikaa käsitellään long-tyyppiisenä millisekunteina, Grez ehtikin jo vastata tähän, kun olin kirjoittamassa vastausta. Hienoa, että avuliaat ja asiantuntevat foorumilaiset antavat auliisti tukipanoksensa myos tällä foorumilla!
Ohjelmointiputka on siis yhä aktiivinen, vaikka täälläkin keskustelu menossa mahdollisesti tämän putkan uudelleenbrändäyksestä, joskin tällä tosiaan on paikkansa verkossa yhä 2021.
Kiitos tästä.
Laitain nyt tähän alle Java-koodin jonka tein teidän ohjeiden mukaan.
double timeSpentDouble = Double.parseDouble(req.getParameter("value")); String timeSpentString = String.valueOf(timeSpentDouble * 60 * 60 * 1000); Long timeSpent = Long.parseLong(timeSpentString);
Kyseessä siis Java Servletti, joka muuttaa post parametrin value millisakunneiksi vaikka tuntiarvosta 1.5.
walkout_ kirjoitti:
double timeSpentDouble = Double.parseDouble(req.getParameter("value")); String timeSpentString = String.valueOf(timeSpentDouble * 60 * 60 * 1000); Long timeSpent = Long.parseLong(timeSpentString);
Miksi muunnat sen välissä merkkijonoksi?
Seuraava tuntuisi loogisemmalta:
double timeSpentHours = Double.parseDouble(req.getParameter("value")); long timeSpentMillis = (long)(timeSpentHours * 60 * 60 * 1000);
Siitä syystä ettei Long.parseLong(jokumuuttuja); hyväksy kuin Stringin ja req.getParameter("value") on Ext JS:ssä aina String. Siis se mitä Ext JS 4.+ lomake tai joku muu postittaa palvelimelle.
Mutta kiitos lyhyemmästä koodista. Sitä paitsi toi mun koodi ei ees toimi kunnolla, vaan antaa Internal Server Error 505. Siitä syystä että se lisää merkkijonoon 1000000.0.
Odotetaan aloittajan vastausta. Jos olet keskustelun aloittaja, kirjaudu sisään ja vastaa!