Jakojäännösfunktio viikonpäivän määrittämiseen

Ohjelmointiin liittyvä asia, mutta ei haeta valmista funktiota jostain kirjastosta, vaan laskukaava funktiolle, joka palauttaa arvon. Funktiolle annetaan kaksi kokonaislukua:

– ns. "epoch"-aika, mikä ilmoittaa ajan sekunteina verrattuna ajankohtaan "torstai 1.1.1970 klo 00.00.00" aikavyöhykkeellä 0

– aikavyöhyke, mikä on tunteja

Funktio palauttaa kokonaisluvun 0...6, jossa 0 on sunnuntai, 1 maanantai jne, esim:

f(0,0)=4
f(86400,0)=5
f(-86400,0)=3
f(43200,0)=4
f(43200,12)=5

Eri sekuntiarvoja ja aikavyöhykkeitä testata voi vaikka tuolla: https://www.unixtimestamp.io/timezone/converter/
6214
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat

Funktin pitäisi siis sisältää myös karkaussekuntien taulukko? Ne kun eivät ole laskettavissa mistään kaavasta.

Äänestä

tämä juttu liittyykin juri sellaiseen missä tsrvitssn todlla paljon bittileveyttä laskentaan, jos haluaa nopeasti laskiea niin... muiaraakseneno peräti 2048-bittiä leveyttä laskea numjeroitta yleensä grafiikkaqkiihdyttimillä vähintään 512 bittiä aina lasdkr4nnassa

Äänestä

nutts miten esität sen vaikka niin sen luvun... hmm jo ei pascal-kielellä, tarvitaan asssembly taitoa se myös directx-kokemusta jorra toimii :D

Äänestä

aluperäiseen kysymykseesi niin aiheuttaa laskennallisia ongelmia tuo normaali-aika ja kesä-aika... joskus mutta tuli mieleen jännä juttu, millä itse tulostan omat koko vuoden kalenterini kerrrALLA..

linkki sivustooon johon itse voit laittaa päivät ja kuut... noniin kuuntele tarkati
http://www.viikko-kalenteri.com/aau/2023/6

jos muutat vaikka; http://www.viikko-kalenteri.com/aau/2024/7

ja niistä kuvista itse piirreskellä omat kalenterit

Äänestä

jaa tainneet poistaaa AHNEUKSISSAAN TUON... on se kumma tämä maailman sairaus tämä AHneus... kuolemansynti...

Äänestä

// JavaScriptillä

const getWeekday = (epochTime, timezone) => {
    ,const days = ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"];
    ,const daysInSeconds = 86400; // yksi päivä sekunteina

    ,// Lisätään aikavyöhyke ja otetaan modulo 7 varmistaaksemme, että saamme luvun väliltä 0...6
    ,let dayIndex = Math.floor((epochTime / daysInSeconds + timezone) % 7);
    ,if (dayIndex < 0) {
    ,    ,dayIndex = 7 + dayIndex;
    ,}

    ,return days[dayIndex];
}

console.log(getWeekday(0, 0));    , // Tulostaa "torstai"
console.log(getWeekday(86400, 0));    , // Tulostaa "perjantai"
console.log(getWeekday(-86400, 0));    , // Tulostaa "keskiviikko"
console.log(getWeekday(43200, 0));    , // Tulostaa "torstai"
console.log(getWeekday(43200, 12));    , // Tulostaa "perjantai"

Äänestä

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

Kommentoi aloitusta


Anonyymi-ap kirjoitti:

Ohjelmointiin liittyvä asia, mutta ei haeta valmista funktiota jostain kirjastosta, vaan laskukaava funktiolle, joka palauttaa arvon. Funktiolle annetaan kaksi kokonaislukua:

– ns. "epoch"-aika, mikä ilmoittaa ajan sekunteina verrattuna ajankohtaan "torstai 1.1.1970 klo 00.00.00" aikavyöhykkeellä 0

– aikavyöhyke, mikä on tunteja

Funktio palauttaa kokonaisluvun 0...6, jossa 0 on sunnuntai, 1 maanantai jne, esim:

f(0,0)=4
f(86400,0)=5
f(-86400,0)=3
f(43200,0)=4
f(43200,12)=5

Eri sekuntiarvoja ja aikavyöhykkeitä testata voi vaikka tuolla: https://www.unixtimestamp.io/timezone/converter/

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu