0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 19
|
|
1 | |
Китайский календарь02.11.2015, 10:40. Показов 3550. Ответов 7
Метки нет (Все метки)
Массив Чисел значений даты OLE-автоматизации:
int[] data = new int[] { 10959, , , , , , , 42308... }; Известно, что промежуток от 10959 и до 11335 соответствует промежутку обычного календаря от 01.01.1930 и до 12.01.1931, что соответствует году лошади по Китайскому календарю. Следующий за ним год козы лежит в промежутке: от 11336 и до 11688 и соответствует датам от 13.01.1931 и до 31.12.1931 обычного календаря и так далее... Из за того, что календарные промежутки разные решение возможно с помощью преобразования числового значения в эквивалентное ему значение даты OLE-автоматизации. Необходимо из предлагаемой пользователем даты в Label1.Text (пусть это будет 09. 05. 1945), определить какому году Китайского календаря она соответствует и вывести в Label2.Text. Попытки найти способ перевести дату в OLE-автоматизации ни к чему не привели, Все найденное предлагает перевести Текущую дату в OLE, а чтобы определить промежутки, нужно Определённые даты перевести в OLE. Надеюсь на Вашу помощь как в малом, так и в великом. Добавлено через 23 часа 31 минуту Поставим вопрос иначе. строка: Label_1 = DateTime.Now.ToOADate(); возвращает эквивалент Текущей даты: 42310 как мне найти эквивалент даты 09.05.1945
0
|
02.11.2015, 10:40 | |
Ответы с готовыми решениями:
7
Отладка кода. Отладчик выдаёт китайский язык календарь Класс Календарь DataGridView и календарь |
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
|
||||||
03.11.2015, 14:47 | 2 | |||||
1
|
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 19
|
|
03.11.2015, 15:58 [ТС] | 3 |
Спасибо за помощь!
А не подскажете может ли "DateTime dt " принимать значения числовых переменных. Где-то так: "DateTime dt = числовая переменная", если да, можно пример синтаксиса? Добавлено через 30 минут Всё спасибо, сам разобрался. DateTime dt = new DateTime(x, y, z);
0
|
Администратор
|
||||||
03.11.2015, 17:42 | 4 | |||||
Попробуй вот так:
0
|
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 19
|
||||||
04.11.2015, 14:52 [ТС] | 5 | |||||
Попробовал, не подошло.
Попробовал:
уже лучше, но по умолчанию в этом представлении год почему то начинается с 1 января, хотя в реальности есть смещение. если скорректировать смещение , всё вместе получается длиннее чем, вариант Дацента. В любом случае спасибо, благодаря Вам узнал, что в С# есть куча других календарей и команд к ним.
0
|
Администратор
|
||||||
04.11.2015, 16:10 | 6 | |||||
Semen_Semenych, не понял что тебя не устраивает. В классе ChineseLunisolarCalendar есть методы для определения года из двенадцитилетнего цикла. Сначала нужно вызвать GetSexagenaryYear который вернет год от 1 до 60. Затем передать это значение в метод GetTerrestrialBranch который вернет значение от 1 до 12. Год при этом начинается не 1 января. Для проверки я написал код в LINQPad и получил результат похожий на твою таблицу. Только вот даты начала годов другие. Возможно это таблица для другого азиатского календаря.
Код для проверки
0
|
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 19
|
||||||
04.11.2015, 17:58 [ТС] | 7 | |||||
в этой строке:
0
|
Администратор
|
|
04.11.2015, 18:27 | 8 |
Semen_Semenych, в ошибке всё сказано. Метод FindFirstNewYearDate является расширяющим методом (extension method). Такие методы объявляются в отдельном классе. В моем примере FindFirstNewYearDate объявлен внутри класса Ext. Если ты хочешь им пользоваться, то добавь в проект новый класс с именем Ext и замени его объявление на текст из примера.
0
|
04.11.2015, 18:27 | |
04.11.2015, 18:27 | |
Помогаю со студенческими работами здесь
8
Интерактивный календарь Календарь для органайзера Не запускается программа-календарь Как добавить в DataGridView календарь Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |