Что такое независимый от языка алгоритм поиска того же дня недели в прошлом году?

Я хочу найти «тот же день недели в прошлом году». Я уверен, что в этом вопросе будет множество тонкостей, о которых я еще не начал думать, но я считаю, что этот вопрос, вероятно, является распространенным.

Вот несколько вариантов использования, когда кто-то может захотеть использовать этот алгоритм:

Пример 1

Я менеджер в Walmart. Я хочу узнать, сколько варежек для котят я продал в тот же день в прошлом году. Я знаю, что покупки варежек для котят тесно связаны с днем ​​недели и неделей года. Таким образом, я хочу знать, "сколько варежек для котят мне нужно запасти на завтра "первый вторник января".

Пример 2

Я медсестра в больнице. Я хочу определить, сколько пациентов будет приходить каждый день на следующей неделе, чтобы я мог лучше согласовать персонал с потребностью в койках. Я знаю, что есть четкие тенденции в отношении того, сколько пациентов поступает в больницу по дням недели, и я хочу посмотреть, сколько пациентов у нас было в «третью пятницу ноября» в прошлом году.

Я чувствую, что это стандартная проблема, с которой люди должны сталкиваться. Есть ли лучший подход к этой задаче? Я могу себе представить проблемы, когда в текущем году, скажем, в ноябре пять пятниц, а в прошлом году их было только четыре, поэтому вы не сможете отчитаться таким образом.

Что такое независимый от языка (хотя, если вам интересно, я бы реализовал это на M) подход к этому алгоритму?


person Taylor C. White    schedule 15.02.2016    source источник
comment
Предпочтительно GT.M, но любой из них будет приемлем. (Язык-агностик тоже работает).   -  person Taylor C. White    schedule 16.02.2016
comment
Я бы порекомендовал опубликовать это на comp.lang.mumps; или, если вы используете Vista, спросите в группе каски Google. Там есть несколько человек, которые просто любят эти задачи и, возможно, уже решили их. Я быстро просмотрел ваш профиль; и вы используете VB6; что маловероятно для любого пользователя Vista.   -  person Sam Habiel    schedule 16.02.2016


Ответы (1)


Есть функция, которая возвращает номер дня недели. В Cache это $zd(date,10), в GT.M должен быть аналогичный. Все, что вам нужно сделать, это исправить дату с помощью этой функции:

set currentDate=+$h
set currentWeekDay=$zd(currentDate,10)
set dateAboutYearAgo=currentDate-365
set weekDayAboutYearAgo=$zd(dateAboutYearAgo,10)
set sameWeekDayAboutYearAgo=dateAboutYearAgo-weekDayAboutYearAgo+currentWeekDay
person SSH    schedule 16.02.2016
comment
Спасибо СШ! Это именно то, что я надеялся сделать. Функция для получения дня недели, которую я использовал, выглядит так: gtDayOfWeek(dte) q dte+4#7+1 - person Taylor C. White; 17.02.2016