7.11. Определение недели в году
7.11. Определение недели в году
Что такое «порядковый номер недели», не вполне ясно. Разные компании, коалиции, правительственные учреждения и органы стандартизации по-разному определяют это понятие. Путаница связана с тем, что год может начинаться с любого дня недели. Все зависит от того, хотим ли мы учитывать неполные недели. К тому же в одних странах неделя начинается с воскресенья, в других — с понедельника.
В этом разделе мы предложим три варианта. Первые два основаны на методе strftime класса Time. Спецификатор %U отсчитывает недели, начинающиеся с воскресенья, а спецификатор %W — начинающиеся с понедельника.
Третью возможность предоставляет класс Date. В нем имеется метод доступа cweek, который возвращает порядковый номер недели, следуя определению из стандарта ISO 8601 (согласно которому первой считается неделя, содержащая первый вторник года).
Если все это вам не подходит, можете придумать собственный алгоритм. Все три решения включены в один фрагмент кода:
require "date"
# Посмотрим, в какую неделю попадает 1 мая в 2002 и 2005 годах.
t1 = Time.local(2002,5,1)
d1 = Date.new(2002,5,1)
week1a = t1.strftime("%U").to_i # 17
week1b = t1.strftime("%W").to_i # 17
week1c = d1.cweek #18
t2 = Time.local(2005,5,1)
d2 = Date.new(2005,5,1)
week2a = t2.strftime("%U").to_i # 18
week2b = t2.strftime("%W").to_i # 18
week2c = d2.cweek # 17
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
День рождения 365 раз в году
День рождения 365 раз в году Метки: темы блога, вниманиеЕсли ваш блог читает не слишком много людей, то поздравить каждого из них с днем рождения вам будет нетрудно, зато вы сделаете им приятно. Если у блога аудитория большая, задача усложняется, особенно без специальных
7.3. Определение дня недели
7.3. Определение дня недели Есть несколько способов определить день недели. Во-первых, метод экземпляра to_a возвращает массив, содержащий всю информацию о моменте времени. Можно обратиться к его седьмому элементу; это число от 0 до 6, причем 0 соответствует воскресенью, а 6 —
7.5. Вычисление n-ого дня недели в месяце
7.5. Вычисление n-ого дня недели в месяце Иногда, зная год и месяц, хочется вычислить дату, скажем, третьего понедельника или второго вторника в этом месяце. Такую задачу решает код в листинге 7.1.Чтобы найти n-ое вхождение данного дня недели, мы передаем n в качестве первого
7.9. Определение порядкового номера дня в году
7.9. Определение порядкового номера дня в году Порядковый номер дня в году иногда еще называют юлианской датой, хотя это не имеет прямого отношения к юлианскому календарю, давно вышедшему из употребления. Многие считают, что такое название неправильно, поэтому мы им больше
7.24. Разбиение месяца на недели
7.24. Разбиение месяца на недели Представьте, что нужно разбить месяц на недели, например чтобы напечатать календарь. Эту задачу решает приведенный ниже код. Возвращаемый массив состоит из подмассивов, по семь элементов в каждом. При этом первому элементу каждого
5.5. Определение номера дня в году
5.5. Определение номера дня в году ПроблемаТребуется определить номер дня в году. Например, 1 января — это первый день в году, 5 февраля это 36-й день в году, и так далее. Но так как некоторые годы — високосные, то после 28 февраля указанный день может иметь не такой же номер, как
ВОПРОС НЕДЕЛИ: Существуют ли какие-либо системы для повышения вероятности выигрыша?
ВОПРОС НЕДЕЛИ: Существуют ли какие-либо системы для повышения вероятности выигрыша? Сергей Пильгуйменеджер по связям с общественностью компании «Русское Казино»Подобных систем довольно много - для каждой игры свои. Профессионалы предпочитают играть в блэкджек или
ВОПРОС НЕДЕЛИ: Каким вы видите компьютер будущего?
ВОПРОС НЕДЕЛИ: Каким вы видите компьютер будущего? xarkonnenдизайнер в рекламном агентствеКак невидимую и неощутимую часть информационной среды. Мозговой нанобиотехнологический имплантат, взаимодействующий с прочими имплантатами и внешними устройствами и датчиками.
ВОПРОС НЕДЕЛИ: Компьютерное моделирование общественного развития — это секретное оружие или шарлатанство?
ВОПРОС НЕДЕЛИ: Компьютерное моделирование общественного развития — это секретное оружие или шарлатанство? Александр Варшавскийдоктор экономических наук, профессор, заведующий лабораторией ЦЭМИ РАНМатематические модели общественного развития — это не секретное
ВОПРОС НЕДЕЛИ К каким последствиям может привести …
ВОПРОС НЕДЕЛИ К каким последствиям может привести … …распространение на компьютерный бизнес борьбы с «серым» импортом, подобно той, что ведется сейчас на рынке мобильных телефонов?Артем Емельяновменеджер по маркетингу ISM ComputersК самым неприятным для простого
Кафедра Ваннаха: Удивительные приключения недели
Кафедра Ваннаха: Удивительные приключения недели Ну, то, что Россия в прошлом веке перешла на григорианский календарь, знают многие. Произошло это в соответствии с «Декретом о введении в Российской республике западноевропейского календаря», принятом 24 января 1918 г.
Через три недели Diaspora постарается убить соцсети Михаил Карпов
Через три недели Diaspora постарается убить соцсети Михаил Карпов Опубликовано 27 августа 2010 года Разработчики опенсорсной «альтернативы Facebook» под названием Diaspora собираются запустить проект через три недели.Проект Diaspora зародился на волне шумихи о
+Две недели: Хакер возвращается
+Две недели: Хакер возвращается Двумя неделями позднее хакер вновь всплыл в сети TransWorld. На этот раз хакер переписал на их сервер программу, которая при исполнении могла пересылать по почте файл с паролями на другую систему в Интернете. Вначале Натан не мог понять, как
+Три недели: Усиление защиты
+Три недели: Усиление защиты Взломы продолжались. Время от времени хакер (или хакеры!) запросто заходил из Интернета. Каждый раз, когда Натан затыкал одну дыру в защите, хакер быстро находил другую. К этому времени сотрудники TransWorld работали в режиме реагирования. Они
ВОПРОС НЕДЕЛИ: Что гарантирует логотип известной компании розничному покупателю?
ВОПРОС НЕДЕЛИ: Что гарантирует логотип известной компании розничному покупателю? Николай РадовскийPR-представитель ATI Technologies в России и СНГЛоготип любой известной IT-компании говорит о двух ключевых характеристиках продукта — качестве и технологическом уровне. При этом