Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получить текущее дату-время в виде строки, работа с датой и временем 
V
    Опции темы
tatan
Дата 10.2.2009, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 31.10.2007

Репутация: нет
Всего: 1



Как получить текущую дату-время в виде строки yyyymmddhhssmsmsms?
Без миллисекунд знаю:
Код

    char buffer [80];
    time_t timer;
    struct tm *tblock;
    timer = time(NULL);
    tblock = localtime(&timer);
    strftime (buffer, 80, "%Y%m%d%H%M%S", tblock);
    std::string s(buffer);

PM MAIL   Вверх
andrew_121
Дата 10.2.2009, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



tatan, MSDN читал? Похоже нет.
вот:
Код

#include <stdio.h>
#include <sys/timeb.h>
#include <time.h>

int main( void )
{
   struct _timeb timebuffer;
   char timeline[26];
   errno_t err;
   time_t time1;
   unsigned short millitm1;
   short timezone1;
   short dstflag1;

   _ftime( &timebuffer ); // C4996
   // Note: _ftime is deprecated; consider using _ftime_s instead

   time1 = timebuffer.time;
   millitm1 = timebuffer.millitm;
   timezone1 = timebuffer.timezone;
   dstflag1 = timebuffer.dstflag;

   printf( "Seconds since midnight, January 1, 1970 (UTC): %I64d\n", 
   time1);
   printf( "Milliseconds: %d\n", millitm1);
   printf( "Minutes between UTC and local time: %d\n", timezone1);
   printf( "Daylight savings time flag (1 means Daylight time is in "
           "effect): %d\n", dstflag1); 
   
   err = ctime_s( timeline, 26, & ( timebuffer.time ) );
   if (err)
   {
       printf("Invalid argument to ctime_s. ");
   }
   printf( "The time is %.19s.%hu %s", timeline, timebuffer.millitm,
           &timeline[20] );
}

Результат:
Код

Seconds since midnight, January 1, 1970 (UTC): 1051553334
Milliseconds: 230
Minutes between UTC and local time: 480
Daylight savings time flag (1 means Daylight time is in effect): 1
The time is Mon Apr 28 11:08:54.230 2003



Это сообщение отредактировал(а) andrew_121 - 10.2.2009, 01:36


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
tatan
Дата 10.2.2009, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 31.10.2007

Репутация: нет
Всего: 1



Спасибо.
Еще вопрос - _ftime() и _timeb кроссплатформенные? Есть ли простой способ получить из timebuffer строку укзанного формата?
PM MAIL   Вверх
andrew_121
Дата 10.2.2009, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



tatan, Да, но немного название другое:
Код

struct timeb
  {
    time_t time;        /* Seconds since epoch, as from `time'.  */
    unsigned short int millitm;    /* Additional milliseconds.  */
    short int timezone;        /* Minutes west of GMT.  */
    short int dstflag;        /* Nonzero if Daylight Savings Time used.  */
  };




--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
tatan
Дата 10.2.2009, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 31.10.2007

Репутация: нет
Всего: 1



Сделал так:
Код

    char buffer [80];
    time_t timer;
    struct tm *tblock;
    struct _timeb timebuffer;
    _ftime( &timebuffer );
    tblock = localtime(&timebuffer.time);
    strftime (buffer, 80, "%Y%m%d%H%M%S", tblock);
    std::string s1(buffer);
    stringstream sss;
    sss << timebuffer.millitm;
    std::string s2(sss.str());
    std::string s3(s1+s2);
    std::cout << "Now is: " << s3 << "\n";
    return 0;


Правильно ли так?. Переносимый ли код? Можно ли как-то лучше?
PM MAIL   Вверх
andrew_121
Дата 10.2.2009, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



tatan, Выложи полный код с функцией main(int argc, char** argv)


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
tatan
Дата 10.2.2009, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 31.10.2007

Репутация: нет
Всего: 1



Код

#include <iostream>
#include <stdio.h>
#include <sys/timeb.h>
#include <time.h>
#include <sstream>

using namespace std;

int main()
{
    char buffer [80];
    time_t timer;
    struct tm *tblock;
    struct _timeb timebuffer;
    _ftime( &timebuffer );
    tblock = localtime(&timebuffer.time);
    strftime (buffer, 80, "%Y%m%d%H%M%S", tblock);
    std::string s1(buffer);
    stringstream sss;
    sss << timebuffer.millitm;
    std::string s2(sss.str());
    string s3(s1+s2);
    std::cout << "Now is: " << s3 << endl;
    return 0;
}



Code::Blocks, MinGW. 
Все работает.

PM MAIL   Вверх
andrew_121
Дата 10.2.2009, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



tatan
Код

#include <iostream>
#include <stdio.h>
#include <sys/timeb.h>
#include <time.h>
#include <sstream>
using namespace std;
int main()
{
    char buffer [80];
    time_t timer;
    struct tm *tblock;
    struct _timeb timebuffer;
    _ftime( &timebuffer );
    tblock = localtime(&timebuffer.time);
    strftime (buffer, 80, "%Y%m%d%H%M%S", tblock);
    string s1 = string(buffer);
    s1 += _itoa(timebuffer.millitm, buffer, 10);
    cout << "Now is: " << s1 << endl;
}



--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
tatan
Дата 10.2.2009, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 31.10.2007

Репутация: нет
Всего: 1



Спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0943 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.