|
НеделяГода? | ☑ | ||
---|---|---|---|---|
0
Азазелло
29.11.11
✎
12:41
|
Дорого времени суток, уважаемые.
Сегодня для меня большим открытием стало, что штатная функция НеделяГода() в текущем году возвращает номер недели больше истинного на 1. Полез читать, выяснил, что ... В России действует стандарт ГОСТ ИСО 8601-2001, который соответствует европейскому стандарту ISO 8601. В соответствии с этими стандартами семидневная неделя начинается с понедельника и идентифицируется своим порядковым номером в году. Первой календарной неделей года считают первую неделю, содержащую первый четверг текущего года. В григорианском календаре — это неделя, содержащая 4 января. Неделя, в которой менее четырех дней приходятся на январь нового года, считается последней неделей старого года. В США и Канаде первой неделей считается любая неделя, содержащая первое января, независимо от числа дней нового года приходящихся на эту неделю. Кроме того, первым днем недели в этих странах принято считать воскресенье. Из-за этого счет недель по европейскому и американскому стандарту может отличаться. Так, например, первое января, суббота в России и Европе считается последней неделей уходящего года, а в Америке и Канаде первой неделей нового года. ... источник здесь: http://www.macmax.ru/calendar/ Так вот, вопрос: это меня баран покусал, и для получения истинного номера недели года необходимо писать свою функцию, или уже все велосипеды изобретены, нужно только выбрать нужный? (какая-либо штатная функция/настройка, БСП, или есть в типовых конфигурациях) |
|||
1
Axel2009
29.11.11
✎
12:42
|
НеделяГода()-1?
|
|||
2
Азазелло
29.11.11
✎
12:43
|
(1) А если буду ей пользоваться в 2012 году?
|
|||
3
Азазелло
29.11.11
✎
12:46
|
омг, НЕДЕЛЯ() в запросах дает такой же результат :(
|
|||
4
Defender aka LINN
29.11.11
✎
12:49
|
(2) "это неделя, содержащая 4 января" - дальше сам догадаешься, или как?
|
|||
5
Axel2009
29.11.11
✎
12:49
|
(2) а что в ней будет не так? майя прилетят?
|
|||
6
Aleksey
29.11.11
✎
12:49
|
(0) баян обсуждали на мисте
|
|||
7
Aleksey
29.11.11
✎
12:50
|
2009 год v8: Нумерация недель..
|
|||
8
Азазелло
29.11.11
✎
12:51
|
2(7) спс.
|
|||
9
Aleksey
29.11.11
✎
12:52
|
2010 года с ответом от 1с
Предлагаемый алгоритм ISO имеет ряд существенных отличий от используемого у нас. Например, 1 января у нас всегда относится к 1-й неделе года, а 31 декабря к последней неделе предыдущего года. Даже, если эти обе даты приходятся на одну неделю. Согласно ISO-8601 31 декабря и 1 января могут относиться к одной неделе. И это будет либо последняя неделя уходящего года, либо 1-я неделя наступающего. Например, если 1 января приходится на пятницу, то согласно ISO-8601, эта дата будет оноситься к последней неделе предыдущего года, а 1-я неделя текущего года начнется только 4 января (в понедельник, то есть 1-й день недели). Таким образом, помимо функции НеделяГода() требуется функция ГодНеделиГода(), которая позоволит установить к какому году относится неделя года. Кроме этого, согласно CLDR и ICU определение дня, с которого начинается 1-я неделя года, является локейло-зависимым. Как и определение 1-го дня недели. Алгоритм, подобный нашему, используется в MS SQL Server в функции DATEPART(week, ...). Там тоже 1 января всегда относится к 1-й неделе года, а 31 декабря - к последней. Возможно, если мы решим получить функциональность ISO-8601, самым правильным было бы оставить НеделяГода() как есть и ввести новые две функции для вычисления недели года и года недели года. Эта задача занесена в проект. Будет ли это реализовано и сроки реализации сказать пока не готовы. (с) OFF: Юзер утверждает, что 30 апреля это не 18-я неделя года |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |