---
title: "Создание календаря Тамриэля"
description: "Не так давно, играя в Skyrim, решил разобраться с календарем и системой летосчисления Тамриэля. Поч..."
author: "Zetoris"
published: "2014-01-05T08:05:38+00:00"
modified: "2014-01-05T08:05:38+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/sozdanie-kalendarya-tamrielya-394084"
markdown_url: "https://yvision.kz/post/sozdanie-kalendarya-tamrielya-394084/markdown"
site_name: "Yvision.kz"
---

# Создание календаря Тамриэля

> Не так давно, играя в Skyrim, решил разобраться с календарем и системой летосчисления Тамриэля. Поч...

![Создание календаря Тамриэля](https://storage.yvision.kz/images/user/zetoris/jh7oKeE3p7AbPFmD44f5UX0pm3QtCh.jpg)

Не так давно, играя в Skyrim, решил разобраться с календарем и системой летосчисления Тамриэля. Почитал тематические вики, немного изучил тему, и пришла идея создания программы или веб-сайта, который бы просто показывал текущую дату в стиле TES, например "1-ое число месяца Вечерней звезды" (первое Декабря).

От написания программы пришлось отказаться, сделать ее достаточно красивой и полезной, чтобы ее устанавливали и скачивали было-бы очень сложно. Поэтому я решил, что это будет сайт. Т.к. с JavaScript я не очень дружу, было решено писать все на php. Забегая вперед скажу, что сразу я не подумал о том, что функция date() в php берет время и дату установленные на сервере, поэтому мой календарь будет актуален лишь для некоторой части планеты.

С тем, каким образом будет оформлен календарь проблем не было, идея пришла сразу, сделать все как в игре, просто лист бумаги, на котором "рукописным" шрифтом была-бы написана нужная информация. Поиск текстуры листа бумаги не занял много времени, вот что нашлось:

![Создание календаря Тамриэля](https://storage.yvision.kz/images/user/zetoris/yYYKxbDQk8Dobzb9NfwYiXr1RO9nU6.jpg)

После чего была сверстана простая страница, с блоком содержащим это изображение как фон. Фоном же страницы стал просто затемненный скриншот из игры, в итоге получилось что-то вроде этого:

![Создание календаря Тамриэля](https://storage.yvision.kz/images/user/zetoris/BYP6VIpxPR2NgHL51V283tj2bDiugh.jpg)

Теперь, когда основа страницы была готова, нужен php код который бы превращал текущую дату непосредственно в Тамриэльскую.

Реализовано при помощи простых кейсов:

 

- $mon = [date](http://www.php.net/date)("n");//номер месяца 1...12

- switch ($mon) {//кейсы выбора имени месяца

- case 1:

- $mon_name = "Утренней звезды";//название на Тамриэльском со склонением

- $star_keepers = "Ритуала";//созвездие покровитель со склонением

- $star_keeper = "Ритуал";//созвездие покровитель без склонения

- $mon_realname = 'Январь';//реальное название (для вывода всплывающей подсказки в теге )

- break;
- case 2:

- $mon_name = "Восхода солнца";

- $star_keepers = "Любовника";

- $star_keeper = "Любовник";

- $mon_realname = 'Февраль';
- break;
- case 3:

- $mon_name = "Первого зерна";

- $star_keepers = "Лорда";

- $star_keeper = "Лорд";

- $mon_realname = 'Март';
- break;

И так далее для 12 месяцев и 7ми дней недели.

Вы могли заметить переменную содержащую простое название месяца - *$mon_realname*. Она необходима для всплывающего текста подсказки при наведении мыши на название месяца или дня недели.

Теперь, выведя полученный результат на страницу мы видим примерно следующее:

![Создание календаря Тамриэля](https://storage.yvision.kz/images/user/zetoris/MhvLM4ivGrt39M2t8H0UfEy925N7Qj.jpg)

Вполне приемлемо, но, пустовато. В этот момент и пришла идея сделать на странице, помимо календаря, еще и запись о том, какой праздник сегодня празднуется. Благо, тут проблем тоже не возникло, вселенная TES имеет чуть ли не самую богатую мифологию и историю из всех вымышленных вселенных, поэтому обратившись к [викия-сайту](http://ru.elderscrolls.wikia.com/wiki/%D0%9F%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8_%D0%A2%D0%B0%D0%BC%D1%80%D0%B8%D1%8D%D0%BB%D1%8F) по серии игр TES я получил список праздников с описаниями и датами. Дело осталось "за малым", заставить эти данные появляться на странице.

Решение пришло быстро, возможно это конечно не самый удачный и красивый способ, но он работает, а остальное не так важно. Смысл был вот в чем, информация о празднике делится на 3 категории: дата (день/месяц), название, описание. Распределив эти данные на 3 строки в текстовом файле, можно было получить отлично машинно-читаемый файл. Правда над датой пришлось немного поработать, ее я решил записывать просто в виде двух цифр с ведущими нолями, например, второе января - 0201. Выглядит примерно так:
- 0101

- Новый год

- Описание праздника может быть довольно длинным, несколько предложений

 

Теперь нужен код, который бы при каждом обращении к сайту, проверял текущую дату, заглядывал в файл с праздниками, и в случае нахождения текущей даты в списке, выводил бы 2 строки - название и описание.

 

- $day=[date](http://www.php.net/date)("d");

- $mon = [date](http://www.php.net/date)("m");

- $holiday_id = "$day$mon";

- $arr = [file](http://www.php.net/file)("data/holidays.txt"); // Считывание файла в массив

- for ($i = 0; $i  *Небольшое отступление:* *Изначально строки никак не хотели совпадать, даже если я был уверен что искомая комбинация цифр точно присутствует в файле. Позже проблема была обнаружена, при сохранении текстового файла в конце каждой строки добавляется символ перевода строки. Этот символ также считывается и в массив, и при сравнении получается что данные не совпадают. При помощи str_replace() это быстро решилось.*

В итоге, получилось так:

![Создание календаря Тамриэля](https://storage.yvision.kz/images/user/zetoris/94oqM3i2DOEspS3L70F7X4zf0flI67.jpg)

Отдельно следует отметить что на странице использован опенсорсный веб-шрифт Alexander, подключенный в css таким образом:

- @font-face {

- font-family: 'Alexander';
- src: url('http://64424.selcdn.ru/webfont/alexander/alexander.eot');
- src: local('Alexander'), local('Alexander Regular'), url('http://64424.selcdn.ru/webfont/alexander/alexander.woff') format('woff'),

- url('http://64424.selcdn.ru/webfont/alexander/alexander.ttf') format('truetype');
- font-weight: normal;
- font-style: normal;

- }

Напоследок в правый нижний угол экрана был прикреплен блок, сообщающий что информация взята с викии The Elder Scrolls, и что эта страница использует лицензию CreativeCommons (чего требует сайт wikia).

![Создание календаря Тамриэля](http://storage.yvision.kz/images/user/zetoris/AjKobm9P0MiBAFnkRk4HzRi0k03ZhR.png)

На данный момент сайт еще не закончен, все из-за проблемы с датой и часовыми поясами, планирую добавить JavaScript, который бы узнавал дату на компьютере посетителя, и делился этой информацией с php.

Спасибо за внимание, буду рад комментариям и оценкам кода, может где-то есть критические ошибки, я не программист и учусь не по этой специальности :)

---

Source: [https://yvision.kz/post/sozdanie-kalendarya-tamrielya-394084](https://yvision.kz/post/sozdanie-kalendarya-tamrielya-394084)