|
|
|
Преобразование даты
|
|||
|---|---|---|---|
|
#18+
Следующий вопросик по языку С. Представление даты может выглядеть как некое число от 01.01.1900. Существует ли какая либо функция API позволяющая выделить из этого числа день, месяц, год. И наоборот из трех составляющих (день, месяц, год) сложить данное число. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2006, 11:24 |
|
||
|
Преобразование даты
|
|||
|---|---|---|---|
|
#18+
avk_soft as> Следующий вопросик по языку С. as> Представление даты может выглядеть как некое число от as> 01.01.1900. Существует ли какая либо функция API В С уже есть API ??? Да и кто же знает, как ты это таинственное число получаешь Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2006, 11:28 |
|
||
|
Преобразование даты
|
|||
|---|---|---|---|
|
#18+
Возможно вам поможет ctime, asctime, mktime. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2006, 11:40 |
|
||
|
Преобразование даты
|
|||
|---|---|---|---|
|
#18+
Согласен вопрос вполне возможно задан некорректно. Приработе с библиотекой DB-library существует следующая структура: typedef struct dbdatetime4 { unsigned short numdays; // number of days since 1/1/1900 unsigned short nummins; // number of minutes sicne midnight } DBDATETIM4; Вопрос с том каким образом посредством каких либо библиотек С извлеч значение дня, месяца, года ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2006, 11:51 |
|
||
|
Преобразование даты
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. man Функция ctime(t) является эквивалентом asctime(localtime(t)). Она преобразует календарное время t в строку формат а "Wed Jun 30 21:49:08 1993\n" А б бревиатуры дней недели: ‘Sun’, ‘Mon’, ‘Tue’, ‘Wed’, ‘Thu’, ‘Fri’ и ‘Sat’. Аббревиатуры месяцев: ‘Jan’, ‘Feb’, ‘Mar’, ‘Apr’, ‘May’, ‘Jun’, ‘Jul’, ‘Aug’, ‘Sep’, ‘Oct’, ‘Nov’ и ‘Dec’. Возвращаемое значение указывает на статичес к и размещеннуюстроку, которая может быть заново записана с помощью последовательности вызовов любых функцийдаты и времени. Функция также устанавливает значение внешней переменной tzname (см. tzset(3)) равным значению текущей вр еменной зоны. Реентрантная версия ctime_r() делает то же самое, но заносит строку вбуфер, предоставляемый пользов ателем. Длина буфера должна быть не менее 26 байт. Устанавливать tzname необязательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2006, 12:10 |
|
||
|
Преобразование даты
|
|||
|---|---|---|---|
|
#18+
Но ведь в соответствии с документацией при значении time_t tt = 0 функция ctime(&tt) вернет 01.01.1970 Как же быть с датами до 01.01.1970 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2006, 14:51 |
|
||
|
Преобразование даты
|
|||
|---|---|---|---|
|
#18+
avk_softНо ведь в соответствии с документацией при значении time_t tt = 0 функция ctime(&tt) вернет 01.01.1970 Как же быть с датами до 01.01.1970 ? Сорри, только сейчас заметил, что у тебя с 1900 года. Даты начинющиеся с 1/1/19xx у меня уже воспринимаются как 1970-й. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2006, 15:03 |
|
||
|
Преобразование даты
|
|||
|---|---|---|---|
|
#18+
Даты считаются так: год % 4 - високосный год % 100 - невисокосный год % 400 (или на 1000 - хз) - високосный. Факт в том, что внутри столетия имеет значение только первое и второе правило, значит, можно поступить так: Сначала надо будет определить сколько минут в 4-х годах = X Потом для каждой даты: 1. Посмотреть, дата у нас меньше или равна 28-му февралю 1900-го года (в минутах это не сложно посчитать)? Если меньше, то вычесть из даты 1 день (т.е. поправка на невисокосный 1900-й год для дальнейших расчетов) 2. разделить твои минуты на X без остатка - это у нас будет количество 4-х годичных периодов 3. отсаток от деления приобразовать в строку с датой. 4. вычесть из строки нужное количество лет. Но это крайний вариант. Может найдешь функцию, чтобы не заниматься этой мутатой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2006, 15:17 |
|
||
|
Преобразование даты
|
|||
|---|---|---|---|
|
#18+
Блин, забыл про 2000-й, он високосным был. Надо будет посчитать Y для 0:0:0 1/1/2000, и если дата (т.е. количество минут) больше, то прибавить 1 день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2006, 15:20 |
|
||
|
Преобразование даты
|
|||
|---|---|---|---|
|
#18+
AkhБлин, забыл про 2000-й, он високосным был. Надо будет посчитать Y для 0:0:0 1/1/2000, и если дата (т.е. количество минут) больше, то прибавить 1 день. Ну, все сори. Опять ошибся. Не надо прибавлять, т.к. он учитывается как обычный кратный 4-м. Теперь алгоритм должен быть верным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2006, 15:22 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=342&tid=2030794]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 303ms |

| 0 / 0 |
