|
|
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
Как осуществить сравнение дат на языке Си.Даты имеют формат YYYY-MM-DD hh:mm:ss.Нужно в конструкции if (data1<data2) { ... }. Почему-то не работает в таком виде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2006, 13:02 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
mxlPostgresКак осуществить сравнение дат на языке Си.Даты имеют формат YYYY-MM-DD hh:mm:ss.Нужно в конструкции if (data1<data2) { ... }. Почему-то не работает в таком виде.Тип то какой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2006, 13:07 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
Данные читаются из текствого файла.В файле они в виде Fri Dec 30 00:00:00 NOVT 2005.Данные приводятся к формату 2006-Dec-30 00:00:00.Тип char,но можно и др тип сделать,в чем собственно и вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2006, 13:58 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
mxlPostgresДанные читаются из текствого файла.В файле они в виде Fri Dec 30 00:00:00 NOVT 2005.Данные приводятся к формату 2006-Dec-30 00:00:00.Тип char,но можно и др тип сделать,в чем собственно и вопрос. Для простоты сравнения и скорости приводить нужно к типу unsigend long или time_t . см. time_t mktime(struct tm *tm); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2006, 14:18 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
Библиотечных ф-ций для перевода даты из такого формата в какой-нибудь стандартный (time_t, CTime (MFC)), по крайней мере в VC, нет. Так-что здесь наверное ручками поработать нужно :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2006, 14:19 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
mxlPostgresКак осуществить сравнение дат на языке Си.Даты имеют формат YYYY-MM-DD hh:mm:ss.Нужно в конструкции if (data1<data2) { ... }. Почему-то не работает в таком виде. если работать со строковыми типами, которые поддерживают сравнение строк(например AnsiString в bcb), то можно работать и с форматом YYYY-MM-DD hh:mm:ss сравнение будет работать. а также везде есть некие типы, специально, предназначенные для работы с временем и датой, в bcb это TDateTime, там операторы сравнения переопределены. но это все для Си++, т.е. не для чистого Си. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2006, 14:48 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
_БалтикаБиблиотечных ф-ций для перевода даты из такого формата в какой-нибудь стандартный (time_t, CTime (MFC)), по крайней мере в VC, нет. Так-что здесь наверное ручками поработать нужно :). Понятное дело придется поработать. Как по мне, так проще распарсить строку заполинть [SRC time.h(GCC)] struct tm { int tm_sec; /* seconds */ int tm_min; /* minutes */ int tm_hour; /* hours */ int tm_mday; /* day of the month */ int tm_mon; /* month */ int tm_year; /* year */ int tm_wday; /* day of the week */ int tm_yday; /* day in the year */ int tm_isdst; /* daylight saving time */ }; [/src] скормить структуру функции mktime и сравнивать числа, чем писать свой алгоритм сравнения. В VC, я думаю, найдется похожий инструмент. зы Я подозреваю автор скоро задаст вопрос как получить разницу между строковыми датами. Ответ: точно также, только нужно не сравнивать а отнимать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2006, 15:32 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
_БалтикаБиблиотечных ф-ций для перевода даты из такого формата в какой-нибудь стандартный (time_t, CTime (MFC)), по крайней мере в VC, нет. Так-что здесь наверное ручками поработать нужно :).обычно sscanf+mktime хватает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2006, 16:52 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
Приведите пример с использованием sscanf и mktime. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 12:43 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
В каком формате вводится год в tm_year. Не воспринимает числа типа 1990 итд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 12:55 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
mxlPostgresВ каком формате вводится год в tm_year. Не воспринимает числа типа 1990 итд. Вычти из 1990 1970 - в libc все даты от 0 часов 1 января 1970 года. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 13:45 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
mxlPostgresВ каком формате вводится год в tm_year. Не воспринимает числа типа 1990 итд. Не знаю, поможет это тебе или нет, но вот пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Обратите внимание на: ++(newtime->tm_mon) и на: (1900+newtime->tm_year) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 13:45 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич mxlPostgresВ каком формате вводится год в tm_year. Не воспринимает числа типа 1990 итд. Вычти из 1990 1970 - в libc все даты от 0 часов 1 января 1970 года. не совсем так: MSDN Help tm structure, defined in TIME.H. ... timeptr Field Value tm_hour Hours since midnight (0 – 23) tm_mday Day of month (1 – 31) tm_min Minutes after hour (0 – 59) tm_mon Month (0 – 11; January = 0) tm_sec Seconds after minute (0 – 59) tm_wday Day of week (0 – 6; Sunday = 0) tm_yday Day of year (0 – 365; January 1 = 0) tm_year Year (current year minus 1900) tm_isdst Positive if daylight saving time is in effect; 0 if daylight saving time is not in effect; negative if status of daylight saving time is unknown. The C run- time library assumes the United States’s rules for implementing the calculation of Daylight Saving Time (DST). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 13:52 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
Как в Си можно разобрать время в формате hh:mm:ss на отдельные составляющие: часы,минуты,секунды? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 13:55 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
mxlPostgresКак в Си можно разобрать время в формате hh:mm:ss на отдельные составляющие: часы,минуты,секунды? Очень просто: Help по функции strtok(); + в качестве разделителя указать символ ':' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 14:01 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
strtok()-говно. Строки надо разбивать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 23:27 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
std::wstring-говно. Строки надо разбивать так: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 00:51 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
Я прав, а White Owl не прав. Следовательно, надо делать, как я написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 13:00 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
Сергей ИльичЯ прав, а White Owl не прав. Следовательно, надо делать, как я написал. 1. Вопрос звучит "Сравнение дат на Си " СИ есть подмножеством С++.И sscanf попадает в это подмножество. 2. Вариант White Owl проще и надежнее и понятнее. Поэтому вариант White Owl более правелен чем ваш. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 13:27 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
mxlPostgresКак осуществить сравнение дат на языке Си.Даты имеют формат YYYY-MM-DD hh:mm:ss.Нужно в конструкции if (data1<data2) { ... }. Почему-то не работает в таком виде. Ето так просто, что не понимаю как можно спрашивать. Читаеш даты в стринги: char date1[20], date2[20]; .... // читать значения date1 и date2 if ( strcmp( date1, date2 ) < 0 ) { ...}; if ( strcmp( date1, date2 ) > 0 ) { ...}; if ( strcmp( date1, date2 ) == 0 ) { ...}; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 11:56 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
Agent 007 mxlPostgresКак осуществить сравнение дат на языке Си.Даты имеют формат YYYY-MM-DD hh:mm:ss.Нужно в конструкции if (data1<data2) { ... }. Почему-то не работает в таком виде. Ето так просто, что не понимаю как можно спрашивать. Читаеш даты в стринги: char date1[20], date2[20]; .... // читать значения date1 и date2 if ( strcmp( date1, date2 ) < 0 ) { ...}; if ( strcmp( date1, date2 ) > 0 ) { ...}; if ( strcmp( date1, date2 ) == 0 ) { ...}; А часовые пояса ты куда здесь засунешь, [censored] ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 12:09 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич Agent 007 mxlPostgresКак осуществить сравнение дат на языке Си.Даты имеют формат YYYY-MM-DD hh:mm:ss.Нужно в конструкции if (data1<data2) { ... }. Почему-то не работает в таком виде. Ето так просто, что не понимаю как можно спрашивать. Читаеш даты в стринги: char date1[20], date2[20]; .... // читать значения date1 и date2 if ( strcmp( date1, date2 ) < 0 ) { ...}; if ( strcmp( date1, date2 ) > 0 ) { ...}; if ( strcmp( date1, date2 ) == 0 ) { ...}; А часовые пояса ты куда здесь засунешь, [censored] ? Если работаеш с GMT (UTC) нет часовые поясы. Все времевые данны сохраняются и сравняются в GMT, а только при изображение делается конверсия к локальное время. Думаю что ето правильный подход. Как думаеш, Сергей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 12:18 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
Agent 007 Если работаеш с GMT (UTC) нет часовые поясы. Все времевые данны сохраняются и сравняются в GMT, а только при изображение делается конверсия к локальное время. Думаю что ето правильный подход. Как думаеш, Сергей? А почему бы time_t не сравнивать? Что быстрее-сравнение двух int-ов или двух строк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 12:39 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич Agent 007 Если работаеш с GMT (UTC) нет часовые поясы. Все времевые данны сохраняются и сравняются в GMT, а только при изображение делается конверсия к локальное время. Думаю что ето правильный подход. Как думаеш, Сергей? А почему бы time_t не сравнивать? Что быстрее-сравнение двух int-ов или двух строк? Правда, что сравнение двух time_t быстрее, но дефиниция time_t: typedef long time_t; В 32 бит времевая информация неполная. Год только 7 бит, секунды через 2. Ето старая кодировка date:time из время ДОС-а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 13:01 |
|
||
|
Сравнение дат на Си
|
|||
|---|---|---|---|
|
#18+
Agent 007 Сергей Ильич Agent 007Как думаеш, Сергей? А почему бы time_t не сравнивать? Что быстрее-сравнение двух int-ов или двух строк? Правда, что сравнение двух time_t быстрее, но дефиниция time_t: typedef long time_t; В 32 бит времевая информация неполная. Год только 7 бит, секунды через 2. Ето старая кодировка date:time из время ДОС-а. Пустой разговор: В Cи все равно никакого времени кроме как 32-битного нет. MFC класс CTime - это обертка вокруг time_t. А чтобы получить время в виде строчки, надо сначала получить его как time_t, и потеря дискретности будет тут. Лично я использую FILETIME в своих программах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 16:01 |
|
||
|
|

start [/forum/search_topic.php?author=Oracle-cool&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 407ms |
| total: | 599ms |

| 0 / 0 |
