Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Часы и хитрый подстановщик даты!  (Прочитано 10611 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Nevis
Гость
« : 09-09-2004 10:30 » 

Есть к Вам вопрос:

Скажите пожалуйста, если знаете, как мне поместить в поле формы текушее время и дату.
И еще, не могу допереть как сделать следующее:
У меня есть форма, где есть кнопки:

Понедельник
Вторник
Среда
Четверг
Пятница

Так вот напротив каждой кнопки надо расставить дату текущего месяца, соответствующую текущей недели, т.е. напротив
Понедельника -> 6 сентября
Вторника-> 7 сентября
и т.д.
При чем если сегодня уже четверг, то среда меняет свое число на др. число, соответствующее среде на след неделе! И так с каждым днем недели!

Есть ли какой-нибудь способ?
Записан
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #1 : 09-09-2004 14:36 » 

Nevis,

cho ti imeesh w widu - kak ee poluchit ili kakoj element ispolzowat?
Цитата

Скажите пожалуйста, если знаете, как мне поместить в поле формы текушее время и дату.


Ti mogesh ispolzowat element DateTimePicker, on zadaet tebe awtomatom segodnjashnjuju datu (mogesh sdelat ego i newidimim, a rezultat pokaziwat w kakom-to textboxe). Mogesh ispolzowat sistemnie funkzii, esli nado - ja kinu primerchik - nedawno uge s etim razwlekalas , no pobedila  Ага
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #2 : 09-09-2004 14:42 » 

Nevis,

izwini, zabila dobawit po powodu wtorogo woprosa :
posmotri klass COleDateTime, tam est wse wozmognie i ne ochen funkzii, no ruchkami wse rawno, naskolko ja znaju, porabotat pridetsja, polnogo awtomata ja ne znaju. T.e. naprimer, poluchit segodnjashnee chislo, a ot nego uge pljasat w rashete posledujushih dnej nedeli
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 09-09-2004 16:01 » 

Nevis, Тебе что точно надобно, готовый обьект. Или ты можеш чуть ручками доработать. Брось напротив каждой кнопки объект Label. И сам ручками просто меняй текст, т.е сделай подпрограмму, которая будет менять текст в Label. И эту подпрограмму подцепи на кнопки перехода недель. Дешево и сердито.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Nevis
Гость
« Ответ #4 : 10-09-2004 10:02 » 

Если есть пример то, буду рад взглянуть на него!
Записан
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #5 : 10-09-2004 11:06 » 

Nevis,

1) COleDateTime :
Код:
COleDateTime m_DateTime = COleDateTime::GetCurrentTime();
  int nTmp = 0;
  nTmp = m_DateTime.GetDay();
  nTmp = m_DateTime.GetMonth();
  nTmp = m_DateTime.GetYear();
i t.d. - smotri msdn (ja prosto dni nedeli ne ispolzowala)

2) ispolzowanie standartnih c/c++ - funkzii date/time :

Код:
//*********************************************
//   find interval between two time_t
//*********************************************
bool checkDateInterval(const char* pStrNow_in, const char* pStrCreateDate_in,
                       int* nDiff_out)
{
#ifdef __cplusplus
    try
    {
#endif
        bool    bIsOk = true;
        time_t  tmpDT1, tmpDT2;

        // convert string - Type in DateTime - Type       
        bIsOk = convertStrToDate(pStrNow_in, &tmpDT1);
        if (bIsOk)
            bIsOk = convertStrToDate(pStrCreateDate_in, &tmpDT2);

        if (bIsOk)
        {
            // calculate difference
            *nDiff_out = ( difftime(tmpDT1, tmpDT2) / (24*60*60) ) -1;
            if ( (*nDiff_out) < -10000)
            {
                trace("checkDateInterval", "nDiff_out < 0", false);
                m_nErrCode = generalErr;
                bIsOk = false;
            }
        }
        return bIsOk;   
#ifdef __cplusplus
    }
    catch(...)
    {
        trace("checkDateInterval", "error", true);
        return false;
    }
#endif
}

//*********************************************
//           get current date
//*********************************************
void getCurDate(char* buf)
{
#ifdef __cplusplus
    try
    {
#endif
        // get Now
        time_t  pTmpDT;
#ifndef __cplusplus
        struct tm*     pTmpDTTm = NULL;
#else
        tm*     pTmpDTTm = NULL;
#endif
        time(&pTmpDT);
        pTmpDTTm = localtime(&pTmpDT);

        // convert to char
        convertDateToStr(buf, pTmpDTTm);

        return;
#ifdef __cplusplus
    }
    catch(...)
    {
        trace("getCurDate", "Internes Fehler", true);
        return;
    }
#endif
}


//*********************************************
//      convert string to time_t
//*********************************************
bool convertStrToDate(const char* buf, time_t* pTmpDT)
{
#ifdef __cplusplus
    try
    {
#endif
        bool    bIsOk = true;
        char    strSep[5], *pStrTmp = NULL, strTmp[BUFFER_SIZE];
    int     nDate[3], i;
#ifndef __cplusplus
        struct tm*     tmnow = NULL;
#else
        tm*     tmnow = NULL;
#endif       
        time_t  tmpDT;
   
        strcpy(strSep, ".");
        strcpy(strTmp, buf);

        // razbiraem string po chastjam (z.B. "22.01.2004") s pom Separator "."
        for (i = 0; i < 3; i++)
        {
            if (i == 0)
            {
                pStrTmp = strtok(strTmp, strSep);
            }
            else
            {
                if(pStrTmp != NULL)
                {
                    pStrTmp = strtok(NULL, strSep);
                }
            }

            if(pStrTmp != NULL)
                nDate[i] = atoi(pStrTmp);   // [0] - d, [1] - m, [2] - y
        }

        // set the value
        time(&tmpDT);
        // convert in -tm-
        tmnow = localtime(&tmpDT);

        // ustanawliwaem prawilnie znachenija
        tmnow->tm_mday = nDate[0];
        tmnow->tm_mon = nDate[1] - 1;
        tmnow->tm_year = nDate[2] - 1900;
        // convert in -time_t-
        tmpDT = mktime(tmnow);
        *pTmpDT = tmpDT;

        return bIsOk;   
#ifdef __cplusplus
    }
    catch(...)
    {
        trace("convertStrToDate", "error", true);
        return false;
    }
#endif
}

//*********************************************
//      convert tm to string
//*********************************************
void convertDateToStr(char* buf,
#ifndef __cplusplus
                      const struct tm* pTmpDT) 
#else
                      const tm* pTmpDT) 
#endif                     
{
#ifdef __cplusplus
    try
    {
#endif
    int d, m, y;
        char buf1[128];

        strcpy(buf1, "");
        if (buf)
            strcpy(buf, "");
        else
            return;

        d = pTmpDT->tm_mday;
        m = pTmpDT->tm_mon + 1;
        y = pTmpDT->tm_year + 1900;

        sprintf(buf1, "%d", d);
        if (d < 10)
            strcat(buf, "0");
        strcat(buf, buf1);
        strcat(buf, ".");

        sprintf(buf1, "%d", m);
        if (m < 10)
            strcat(buf, "0");
        strcat(buf, buf1);
        strcat(buf, ".");

        sprintf(buf1, "%d", y);
        strcat(buf, buf1);
        return;
#ifdef __cplusplus
    }
    catch(...)
    {
        trace("convertDateToStr", "error", true);
        return;
    }
#endif
}


esli est woprosi - skagi. nadejus, chto hot nemnogo tebe pomogla. Улыбаюсь
« Последнее редактирование: 01-12-2007 13:45 от Алексей1153++ » Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Diletant
Помогающий

de
Offline Offline

« Ответ #6 : 10-09-2004 12:28 » new

Сумасшедшие сложности. Раз дело происходит в Windows, то там существует функция GetLocalTime(), заполняющая структуру SYSTEMTIME, в которой есть все, включая день недели. А все остальное в пределах арифметики для первого класса.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines