0 / 0 / 0
Регистрация: 14.08.2011
Сообщений: 54
|
|
1 | |
Перевод дней в дату.01.04.2012, 01:34. Показов 13096. Ответов 15
Метки нет (Все метки)
У меня задача, написать функцию, в которую я подаю секунды, а мне выводиться дата.
Количество секунд, предположим: 63492498494. Я должен вывести дату в формате: 2011-12-30 21:08:14 Часы, минуты, секунды посчитал. И у меня осталось 734866 дней. Что с ними делать ? Циклы не предлагать. Есть мысль поделить на 365, получить 2013 год и 167 месяцев, потом посчитать количество високосных лет (функция уже есть) но параметр будет 2013, а не 2011, как мне хотелось бы, будет ошибка.... Подскажите как решить эту нетривиальную проблему.
0
|
01.04.2012, 01:34 | |
Ответы с готовыми решениями:
15
Дана строка, содержащая дату в виде «dd.mm.yyyy». Определить дату через n дней Перевод количества дней в количество лет, месяцев и дней Функция, принимающая на вход дату рождения и текущую дату, и вычисляющая число дней до дня рождения Увеличить дату на n дней |
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
|
||||||
01.04.2012, 01:40 | 2 | |||||
0
|
0 / 0 / 0
Регистрация: 14.08.2011
Сообщений: 54
|
|
01.04.2012, 01:55 [ТС] | 3 |
спасибо конечно, но это чит, так нельзя, нам нужно вручную костыли строить.
0
|
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
|
||||||
01.04.2012, 02:31 | 4 | |||||
0
|
0 / 0 / 0
Регистрация: 14.08.2011
Сообщений: 54
|
|
01.04.2012, 02:46 [ТС] | 5 |
Каждый 4-ый год високосный.
Каждый 100-ый год не високосный. Каждый 400-ый год високосный. Итого. Високосных = 1/4 + 1/400 - 1/100 = 0.2425 Можно было бы поделить дни на 365.2425, но ПРОБЛЕМААА !! Что-то мне подсказывает, что первым високосным годом был год 1600.
0
|
0 / 0 / 0
Регистрация: 14.08.2011
Сообщений: 54
|
||||||
01.04.2012, 03:53 [ТС] | 7 | |||||
у меня открыта эта страничка....в общем, тогда делим на 365.2425, получаем 2011, всё по плану.
остаток исчез. не могу получить остаток от деления на 365.2425, потому как Нельзя получить остаток от деления double на double.
0
|
Модератор
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,755
|
||||||
01.04.2012, 04:10 | 8 | |||||
Это Вы откуда такие числа взяли?
Код
$ ./now_seconds 1333238279 Дао в том, чтобы не замутнять рассудок лишними знаниями. С 1970 года 50 лет ещё не прошло. Учитывая, что первым начиная с 1970 был 1972 год, не сложно посчитать сколько их, високосных было. Но только оно не нужно. Проще найти количество четырёхлетних периодов вроде того...
0
|
20 / 13 / 1
Регистрация: 17.12.2010
Сообщений: 34
|
|
01.04.2012, 04:24 | 9 |
Так дели инт на дабл :]
int x = 21; double y = 3.9; double z = x%y; // z = 1.5 Добавлено через 6 минут Насколько я понял у него другая задача. Например, пользователь ввел 2 миллиарда секунд, и узнал, сколько это лет, месяцев, дней, часов, минут и секунд :] Не по теме: Эх вроде бы 2 миллиарда секунд не так много кажется, а это больше 60 лет :[
0
|
0 / 0 / 0
Регистрация: 14.08.2011
Сообщений: 54
|
||||||
01.04.2012, 04:36 [ТС] | 10 | |||||
я почти справился с данной функцией.
у меня задача перегрузить много разных операторов. сейчас работаю над "+"
y = sekundy / 365.2425; int64_t helphelp = sekundy; helphelp = sekundy - (y * 365.2425); Добавлено через 7 минут не катит деление не 365.2425. потерял 1 день. получилось 2011-12-29 21:8:14 вместо 2011-12-30 21:08:14
0
|
Модератор
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,755
|
|
01.04.2012, 04:41 | 11 |
В этом смысле... Как-то привычнее уже время в секундах с 01.01.1970 измерять... Ну тогда всё ещё проще:
734866 / 1461 х 4 = 2008 в остатке 1444 дня. Грубо на 365 - 3 года, плюс 2008 - 2011 год, осталось опять же с месяцами разобраться...
0
|
0 / 0 / 0
Регистрация: 14.08.2011
Сообщений: 54
|
|
01.04.2012, 05:10 [ТС] | 12 |
Тогда ещё 1 функцию писать, которая будет делать перерасчёт лет....спасибо за цифры, буду шаманить.
Добавлено через 22 минуты echo $(((734866*4)%1461)) остаток 1393. это 3 года и 298 дней, а у нас 364 должно получиться
0
|
Модератор
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,755
|
|
01.04.2012, 05:41 | 13 |
здесь-то зачем на 4 умножать?
Код
$ perl -e "print ( 734866 % 1461 );" 1444
0
|
1177 / 419 / 106
Регистрация: 31.03.2012
Сообщений: 1,145
|
|
01.04.2012, 07:16 | 14 |
Нет, нет, нет! не надо! Во-первых, определитесь от какой точки (времени) идет отсчет,
вот NEKTO, начинает отсчет от 1 января 1970 года 0 часов 00 минут. Впрочем, даю наВодку, и localtime и gmtime ведут отсчет от начала эпохи.
0
|
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
|
|||||||||||
01.04.2012, 12:57 | 15 | ||||||||||
быдлокод стал еще больше Теперь считает дату. код
0
|
0 / 0 / 0
Регистрация: 14.08.2011
Сообщений: 54
|
|
01.04.2012, 13:51 [ТС] | 16 |
Я уже писал ранее, что time.h использовать нельзя.
И время надо считать от Рождества Христова. Добавлено через 21 минуту Не вариант здесь вот такие операции производить: y = sekundy / 1461 * 4; sekundy = (sekundy % 1461); Нам могут дать дату 1600-ый год, 1900-ый итд
0
|
01.04.2012, 13:51 | |
01.04.2012, 13:51 | |
Помогаю со студенческими работами здесь
16
Как увеличить дату на 10 дней? Как проверить полученную дату в промежутке от 20 до 25 дней Вывести дату которая наступит через N дней По заданным дню и месяцу определить дату предыдущего и следующего дней Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |