Kāds datums ir nedēļas sākumā/beigās weekToDate()

Šogad daudziem Axaptas lietotājiem bija šoks ieraugot, ka dažādās vietās viena un tā pati nedēļa tiek uztverta savādāk. Šeit ir aprakstīta atšķirība starp funkcijām wkOfYr() un weekOfYr(). Arī viena no manām funkcijām, kas noteica nedēļas pirmo/pēdējo datumu strādāja nepareizi un nācās to pārtaisīt. Problēma ir tur, ka gada pirmā nedēļa ir tā, kurā ietilpst ceturdiena, līdz ar to 2010. gadā 1.janvāris atradās 2009. gada 53 nedēļā. Funkcijā ir cikls – šinī sakarā droši vien būs janoklausās kaut kādi optimizācijas ieteikumi.

static date weekToDate(int  _year, int _week, boolean _endOfWeek = false)
{
    date      ret = mkdate(1, 1, _year);
    int       curWeek, tmpWeek;
    ;
    if (DayOfWk(ret) >= 5)�
    {
        ret = ret + 7 – DayOfWk(ret);
    }
    else
    {
        ret = ret – DayOfWk(ret);
    }

    while (curWeek < _week)
    {
        ret++;
        tmpWeek = curWeek;
        curWeek = wkOfYr(ret);
        if (tmpWeek && tmpWeek > curWeek)
        {
            return DateNull();
        }
    }
    if (_endOfWeek)
    {
        ret += 6;
    }
    return ret;
}

Tiem, kas neprogrammē Axaptā, nekādas jēgas no šī funkcijas nebūs, jo es izmantoju Axaptā iebūvēto f-ju wkOfYr().

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Pievienot komentāru

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*