Tässä tällainen aloittelijaystävällinen koodivinkki luultavasti riittävän hyvin kommentoituna ja muutenkin selvänä.
Funktion tarkoituksenahan on siis muuttaa sekunnit muotoon: viikot vuorokaudet tunnit minuutit sekunnit (w d h min s) string-merkkijonoksi. Nimi tälle funktiolle tulee siitä, että mIRC scriptissä on juuri samanlainen $duration(), niin päätinpä kääntää sen C++:lle.
PS. Tämä on ensimmäinen koodivinkkini. :-)
duration.h
std::string duration(const int sekunnit)
{
    std::string palaute;        // funktion palautettava arvo
    char temp[100] = { 0 };     // sprintf tarvitsee char-taulukon parametrikseen
    int w = 0,                  // viikot
        d = 0,                  // vuorokaudet
        h = 0,                  // tunnit
        min = 0,                // minuutit
        s = sekunnit;           // sekunnit
    if (sekunnit < 0) s *= -1;  // jos parametrina on annettu negatiivinen luku, käännetään se positiiviseksi
    while (s >= 60*60*24*7)     // 60 sekuntia * 60 (minuutit) * 24 (tunnit) * 7 (vuorokaudet) = viiko
    {
        w++;                    // lisätään viikkoja ja
        s -= 60*60*24*7;        // vähennetään sekunteja yhden viikon verran
    }                           // kunnes on siirryttävä vuorokausiin, jolloin sekunteja
                                // ei voida enää kokonaisina viikkoina ilmoittaa
    while (s >= 60*60*24)       // 60 sekuntia * 60 (minuutit) * 24 (tunnit) = vuorokausi
    {
        d++;                    // lisätään vuorokausia ja
        s -= 60*60*24;          // vähennetään sekunteja yhden vuorokauden verran
    }                           // kunnes on siirryttävä tunteihin, jolloin sekunteja
                                // ei voida enää kokonaisina vuorokausina ilmoittaa
    while (s >= 60*60)          // 60 sekuntia * 60 (minuutit) = tunti
    {
        h++;                    // lisätään tunteja ja
        s -= 60*60;             // vähennetään sekunteja yhden tunnin verran
    }                           // kunnes on siirryttävä minuutteihin, jolloin sekunteja
                                // ei voida enää kokonaisina tunteina ilmoittaa
    while (s >= 60)             // 60 sekuntia = minuutti
    {
        min++;                  // lisätään minuutteja ja
        s -= 60;                // vähennetään sekunteja yhden minuutin verran
    }                           // kunnes on enää alle 60 sekuntia jäljellä, jolloin sekunteja
                                // ei voida enää kokonaisina minuutteina ilmoittaa
    if (w)                      // jos parametrina annettu aika on yksi viikko tai enemmän,
    {                           // lisätään viikot funktion arvoon
        sprintf(temp, "%iw ", w);
        palaute += temp;
    }
    if (d)                      // jos parametrina annettu aika on yksi vuorokausi tai enemmän,
    {                           // lisätään vuorokaudet funktion arvoon
        sprintf(temp, "%id ", d);
        palaute += temp;
    }
    if (h)                      // jos parametrina annettu aika on yksi tunti tai enemmän,
    {                           // lisätään tunnit funktion arvoon
        sprintf(temp, "%ih ", h);
        palaute += temp;
    }
    if (min)                    // jos parametrina annettu aika on yksi minuutti tai enemmän,
    {                           // lisätään minuutit funktion arvoon
        sprintf(temp, "%imin ", min);
        palaute += temp;
    }
    sprintf(temp, "%is", s);    // sekunnit lisätään aina funktion arvoon
    palaute += temp;
    if (sekunnit < 0)           // jos parametrina annettu aika on negatiivinen,
        palaute = "-" + palaute;// lisätään miinusmerkki ennen lukua
    return palaute;             // palautetaan sekunnit muodossa w d h min s
}funktion käyttö
#include <iostream>
#include "duration.h"
using namespace std;
int main()
{
    cout<<duration(2231234); // tulostaa 3w 4d 19h 47min 14s
    return 0;
}Aihe on jo aika vanha, joten et voi enää vastata siihen.