The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Сравнение дат на Си"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Сравнение дат на Си"  
Сообщение от mxl email(ok) on 16-Мрт-06, 14:29 
Как правильно сравнивать даты в формате YYYY-MM-DD hh-mm-ss в конструкции if () {}.
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Сравнение дат на Си"  
Сообщение от BsDr (??) on 16-Мрт-06, 14:56 
>Как правильно сравнивать даты в формате YYYY-MM-DD hh-mm-ss в конструкции if ()
>{}.
Преобразовать в UNIX вемя и сравнивать количество секунд.
man mktime


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Сравнение дат на Си"  
Сообщение от GeKa email(??) on 16-Мрт-06, 16:28 
>>Как правильно сравнивать даты в формате YYYY-MM-DD hh-mm-ss в конструкции if ()
>>{}.
>Преобразовать в UNIX вемя и сравнивать количество секунд.
>man mktime

А в каком виде у тебя эта дата? Если в строке, то я думаю strcmp() будет их сравнивать вполне корерктно.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "Сравнение дат на Си"  
Сообщение от mxl email(ok) on 16-Мрт-06, 16:36 
>>>Как правильно сравнивать даты в формате YYYY-MM-DD hh-mm-ss в конструкции if ()
>>>{}.
>>Преобразовать в UNIX вемя и сравнивать количество секунд.
>>man mktime
>
>А в каком виде у тебя эта дата? Если в строке, то
>я думаю strcmp() будет их сравнивать вполне корерктно.


В char.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "Сравнение дат на Си"  
Сообщение от GeKa email(??) on 16-Мрт-06, 16:55 
>>>>Как правильно сравнивать даты в формате YYYY-MM-DD hh-mm-ss в конструкции if ()
>>>>{}.
>>>Преобразовать в UNIX вемя и сравнивать количество секунд.
>>>man mktime
>>
>>А в каком виде у тебя эта дата? Если в строке, то
>>я думаю strcmp() будет их сравнивать вполне корерктно.
>
>
>В char.

Ты конечно же имеешь ввиду char* ? ;)

Гут. Просто сравнить 2 строки, думаю, будет быстрее, чем парсить их для конвертания в unixtimestamp. А, учитывая формат даты (именно YYYY-MM-DD hh-mm-ss), это будет вполне корректным сравнением дат.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "Сравнение дат на Си"  
Сообщение от chip email(ok) on 16-Мрт-06, 17:05 
>>>>Как правильно сравнивать даты в формате YYYY-MM-DD hh-mm-ss в конструкции if ()
>>>>{}.
>>>Преобразовать в UNIX вемя и сравнивать количество секунд.
>>>man mktime
>>
>>А в каком виде у тебя эта дата? Если в строке, то
>>я думаю strcmp() будет их сравнивать вполне корерктно.
>
>
>В char.

Что-то новенькое. Может быть char[] (char*)?!

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

6. "Сравнение дат на Си"  
Сообщение от GeKa email(??) on 16-Мрт-06, 17:17 
>>>>>Как правильно сравнивать даты в формате YYYY-MM-DD hh-mm-ss в конструкции if ()
>>>>>{}.
>>>>Преобразовать в UNIX вемя и сравнивать количество секунд.
>>>>man mktime
>>>
>>>А в каком виде у тебя эта дата? Если в строке, то
>>>я думаю strcmp() будет их сравнивать вполне корерктно.
>>
>>
>>В char.
>
>Что-то новенькое. Может быть char[] (char*)?!

Наскока я помню (чесно говоря, на С давно уже не писал), char[] есть ничто иное как указатель на char, т.е. char*. Или я не прав?!


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

7. "Сравнение дат на Си"  
Сообщение от chip email(ok) on 16-Мрт-06, 17:33 
>>Что-то новенькое. Может быть char[] (char*)?!
>
>Наскока я помню (чесно говоря, на С давно уже не писал), char[]
>есть ничто иное как указатель на char, т.е. char*. Или я
>не прав?!

Домашнее задание:

#include <string.h>
int main(int argc, char *argv[]) {
        char s[80] = "Hello";
        strcat(s, ", World!");
}      

#include <string.h>
int main(int argc, char *argv[]) {
        char *s = "Hello ";
        strcat(s, ", World!");
}

Найти 10-ть отличий и понять, почему первое работает, а второе - нет.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

8. "Сравнение дат на Си"  
Сообщение от GeKa email(??) on 16-Мрт-06, 18:52 
>>>Что-то новенькое. Может быть char[] (char*)?!
>>
>>Наскока я помню (чесно говоря, на С давно уже не писал), char[]
>>есть ничто иное как указатель на char, т.е. char*. Или я
>>не прав?!
>
>Домашнее задание:
>
>#include <string.h>
>int main(int argc, char *argv[]) {
>        char s[80] = "Hello";
>
>        strcat(s, ", World!");
>}
>
>#include <string.h>
>int main(int argc, char *argv[]) {
>        char *s = "Hello
>";
>        strcat(s, ", World!");
>}
>
>Найти 10-ть отличий и понять, почему первое работает, а второе - нет.
>

Нашел место поумничать?!

char s[80] <==> char* = new char(80);

За исключением того что память выделяется в разных местах, но это не имеет отношения к исходному вопросу.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

9. "Сравнение дат на Си"  
Сообщение от chip email(ok) on 16-Мрт-06, 19:08 
>>>>Что-то новенькое. Может быть char[] (char*)?!
>>>
>>>Наскока я помню (чесно говоря, на С давно уже не писал), char[]
>>>есть ничто иное как указатель на char, т.е. char*. Или я
>>>не прав?!
>>
>>Домашнее задание:
>>
>>#include <string.h>
>>int main(int argc, char *argv[]) {
>>        char s[80] = "Hello";
>>
>>        strcat(s, ", World!");
>>}
>>
>>#include <string.h>
>>int main(int argc, char *argv[]) {
>>        char *s = "Hello
>>";
>>        strcat(s, ", World!");
>>}
>>
>>Найти 10-ть отличий и понять, почему первое работает, а второе - нет.
>>
>
>Нашел место поумничать?!

Это Вы, Пан, умничаете. Посмотрите первую, строчку, которая до сих пор идет в квотировании. А теперь turnon(&brain);

>char s[80] <==> char* = new char(80);

>>>Наскока я помню (чесно говоря, на С давно уже не писал)

Хреновые у Вас познания в Си. new таки пережитки плюсавого.

>За исключением того что память выделяется в разных местах, но это не
>имеет отношения к исходному вопросу.

Опять таки пернули в лужу. В первом сключае char[] она размещается в стеке, а в другом в куче. А в целом, конечно, можно продолжать мести пургу...только в одиночку.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

10. "Сравнение дат на Си"  
Сообщение от GeKa email(??) on 16-Мрт-06, 19:15 
>>>>>Что-то новенькое. Может быть char[] (char*)?!
>>>>
>>>>Наскока я помню (чесно говоря, на С давно уже не писал), char[]
>>>>есть ничто иное как указатель на char, т.е. char*. Или я
>>>>не прав?!
>>>
>>>Домашнее задание:
>>>
>>>#include <string.h>
>>>int main(int argc, char *argv[]) {
>>>        char s[80] = "Hello";
>>>
>>>        strcat(s, ", World!");
>>>}
>>>
>>>#include <string.h>
>>>int main(int argc, char *argv[]) {
>>>        char *s = "Hello
>>>";
>>>        strcat(s, ", World!");
>>>}
>>>
>>>Найти 10-ть отличий и понять, почему первое работает, а второе - нет.
>>>
>>
>>Нашел место поумничать?!
>
>Это Вы, Пан, умничаете. Посмотрите первую, строчку, которая до сих пор идет
>в квотировании. А теперь turnon(&brain);
>
>>char s[80] <==> char* = new char(80);
>
>>>>Наскока я помню (чесно говоря, на С давно уже не писал)
>
>Хреновые у Вас познания в Си. new таки пережитки плюсавого.

Вот тут я соглашусь. В чистом Си не силен.

>>За исключением того что память выделяется в разных местах, но это не
>>имеет отношения к исходному вопросу.
>
>Опять таки пернули в лужу. В первом сключае char[] она размещается в
>стеке, а в другом в куче. А в целом, конечно, можно
>продолжать мести пургу...только в одиночку.

А разве стек и куча - не разные места?! Я про это и говорил.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

11. "Сравнение дат на Си"  
Сообщение от Anonymous on 16-Мрт-06, 19:55 
>>>>>Что-то новенькое. Может быть char[] (char*)?!
>>>>
>>>>Наскока я помню (чесно говоря, на С давно уже не писал), char[]
>>>>есть ничто иное как указатель на char, т.е. char*. Или я
>>>>не прав?!
>>>
>>>Домашнее задание:
>>>
>>>#include <string.h>
>>>int main(int argc, char *argv[]) {
>>>        char s[80] = "Hello";
>>>
>>>        strcat(s, ", World!");
>>>}
>>>
>>>#include <string.h>
>>>int main(int argc, char *argv[]) {
>>>        char *s = "Hello
>>>";
>>>        strcat(s, ", World!");
>>>}
>>>
>>>Найти 10-ть отличий и понять, почему первое работает, а второе - нет.
>>>
>>
>>Нашел место поумничать?!
>
>Это Вы, Пан, умничаете. Посмотрите первую, строчку, которая до сих пор идет
>в квотировании. А теперь turnon(&brain);
>
>>char s[80] <==> char* = new char(80);
>
>>>>Наскока я помню (чесно говоря, на С давно уже не писал)
>
>Хреновые у Вас познания в Си. new таки пережитки плюсавого.
>
>>За исключением того что память выделяется в разных местах, но это не
>>имеет отношения к исходному вопросу.
>
>Опять таки пернули в лужу. В первом сключае char[] она размещается в
>стеке, а в другом в куче. А в целом, конечно, можно
>продолжать мести пургу...только в одиночку.
Гениально!
вы перевернули мир, а раньше считал, что конструкция
char *s = "Hello"; создает масив длиной в 6 битов а оказалось это просто розмещается в куче, буду знать, а то чтобы масив вообще розмещать в стеке, ГАГАГАГА, я представляю масив
"ПЕРВЫМ ПРИШЕЛ ПОСЛЕДНИМ ВЫШЕЛ", спасибо, буду знать
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

12. "Сравнение дат на Си"  
Сообщение от sandy email(??) on 16-Мрт-06, 20:11 
http://www.opennet.me/openforum/vsluhforumID9/5218.html
Правда на С++
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

13. "Сравнение дат на Си"  
Сообщение от chip email(ok) on 16-Мрт-06, 20:11 
>char *s = "Hello"; создает масив длиной в 6 битов а оказалось

Школьный курс информатики: БИТ != БАЙТ.

>"ПЕРВЫМ ПРИШЕЛ ПОСЛЕДНИМ ВЫШЕЛ", спасибо, буду знать

Массив - это последовательность. Последовательнисти основательно изучаются на первом курсе университета/института. Всё в Ваших руках...


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

14. "Сравнение дат на Си"  
Сообщение от Anonymous on 16-Мрт-06, 20:24 
>>char *s = "Hello"; создает масив длиной в 6 битов а оказалось
>
>Школьный курс информатики: БИТ != БАЙТ.
>
>>"ПЕРВЫМ ПРИШЕЛ ПОСЛЕДНИМ ВЫШЕЛ", спасибо, буду знать
>
>Массив - это последовательность. Последовательнисти основательно изучаются на первом курсе университета/института. Всё
>в Ваших руках...


не стоит чеплятся за опечатки насчет ,бита, но то что вы написано просто гон

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

15. "Сравнение дат на Си"  
Сообщение от chip email(ok) on 16-Мрт-06, 20:35 
>не стоит чеплятся за опечатки насчет ,бита,

++

>> "ПЕРВЫМ ПРИШЕЛ ПОСЛЕДНИМ ВЫШЕЛ", спасибо, буду знать

FILO - это тоже очепятка по Вашему?!

Последним пришёл первым вышел - LIFO
Первым пришёл первым вышел - FIFO

А что за нововведение с FILO?

Батенька, да у Вас Очепятки получается на каждом шагу. Читаем самостоятельно, что люди понимают под LIFO и под массивом. Ключевой вопрос, возможно обращение произвольному элементу в LIFO/FIFO? А в массиве? Результат: идем в садик.

> но то что вы написано
>просто гон

Аргументируешь? Желательно кодом.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

16. "Сравнение дат на Си"  
Сообщение от Anonymous on 16-Мрт-06, 20:48 
>>не стоит чеплятся за опечатки насчет ,бита,
>
>++
>
>>> "ПЕРВЫМ ПРИШЕЛ ПОСЛЕДНИМ ВЫШЕЛ", спасибо, буду знать
>
>FILO - это тоже очепятка по Вашему?!
>
>Последним пришёл первым вышел - LIFO
>Первым пришёл первым вышел - FIFO
>
>А что за нововведение с FILO?
>
>Батенька, да у Вас Очепятки получается на каждом шагу. Читаем самостоятельно, что
>люди понимают под LIFO и под массивом. Ключевой вопрос, возможно обращение
>произвольному элементу в LIFO/FIFO? А в массиве? Результат: идем в садик.
>
>
>> но то что вы написано
>>просто гон
>
>Аргументируешь? Желательно кодом.

Вы хотите сказать что первый елемент уйдет не последним?
Вы просто чепляетесь за слова,
я просто росмеялся когда уведил это "В первом сключае char[] она размещается в стеке, а в другом в куче". и все, Какое отношение все это имеет к стеку? Вот в чом суть.

>Ключевой вопрос, возможно обращение
>произвольному элементу в LIFO/FIFO? А в массиве? Результат: идем в садик.
я же то и имел ввиду, можно конечно же реализовать масив ввиде стека, но это смешно, хотя  
по вашему char[] тоже и делает.

Что теперь не так?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

17. "Сравнение дат на Си"  
Сообщение от jd (??) on 17-Мрт-06, 02:30 
Господа, прекратите, пожалуйста, флейм. Что вы пытаетесь друг другу доказать?
Чтобы развеять неясности, внесу свои пять копеек.

Говоря о стеке, chip подразумевал сегмент памяти, в котором размещаются локальные переменные (например массив, объявленный в функции как char str[80]), а не способ хранения набора элементов, как подумал господин, пожелавший остаться безымянным. Кучей (heap) называют сегмент памяти, в котором размещаются динамически выделяемые области (например, функцией malloc(3) в C). Раз уж зашёл разговор о сегмантах памяти, то ещё бывает сегмент кода, в котором находятся инструкции программы и сегмент данных, в котором размещаются глобальные переменные, константы и пр. (то есть области, размер которых известен до старта программы). Всё это, разумеется, подробно описано во множестве мест, так что любой интересующийся (если вдруг такие тут окажутся) сможет легко это найти.

К разговору выше: что касается char[] и char*, то в использовании (если исключить выделение/освобождение памяти), особенно в контексте вопроса, они в общем-то похожи. Точнее, больше похожи char[] и char *const. Но всё это действительно не имеет отношения к вопросу. Да и спор-то возник только из-за желания поспорить. И из-за того, что GeKa ошибочно принял коментарий chip'а (5-й) на свой адрес, хотя он был адресован автору темы.

А по сути: действительно, если даты имеются в строковом представлении и формат их именно YYYY-MM-DD hh-mm-ss, то можно сравнить две строки, так что Geka предложил правильное и остроумное решение, хотя и зависящее от формата дат.

И не нужно ссориться, мы же здесь чтобы помочь друг другу, а не чтобы показать, кто круче.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру