2015-04-24 2 views
0

Я для отображения даты и времени по отдельности, используя GetTime() и GETDATE() в C язык программирования. Код, который я написал, отображает только дату и время на одной строке. Я хочу, чтобы этот код можно сделать, используя только ядро ​​C не в редакторе окна format.The я использую Visual Studio 2008как отобразить DateTime с помощью C Программирование

Ниже я отправлю свой код, который показывает только время даты на одной строке.

#include "stdafx.h" 
#include <conio.h> 
#include <stdio.h> 
#include <time.h> 

char *gettime(); 
int_main(int argc,_TCHAR* argv[]) 
{ 
printf("The time is %s\n",gettime()); 
getch(); 
return 0; 
} 
char *gettime() 
{ 

time_t t; 
tm b; 
time(&t); 
return ctime(&t); 

} 
+1

Чтения о [функциях даты и времени в стандартной библиотеке] (HTTP: //en.cppreference. com/w/c/chrono) может помочь. –

+1

Возможный дубликат [как получить дату и время в программе C) (http://stackoverflow.com/questions/1442116/how-to-get-date-and-time-value-in-c-program) – Aracthor

+0

Используйте [strfrtime] (http://man7.org/linux/man-pages/man3/strftime.3.html). –

ответ

0

Вы можете использовать МестноеВремя/gmtime

struct tm * timeinfo; 
timeinfo = localtime (&t); 

И работать с tm компонентами структуры, как вам нужно, и вы можете использовать strfrtime функцию форматирования, если вам нужно только дату и время печати.

+0

Я работал над структурой tm и использовал отображение времени в режиме strfrtime, спасибо за помощь !! –

0

Основная функция одинакова для всех по-разному:

#include <stdio.h> 
#include <time.h> 
#include <string.h> 

char * gettime(); 
char * getdate(); 

int main() 
{ 
    printf("The time is %s\n", gettime()); 
    printf("The date is %s\n", getdate()); 

    return 0; 
} 

Одним из способов вы можете сделать это с манипулированием строк, возвращающиеся из функции CTIME(). Мы знаем, что они построены аналогичным образом, 1-й 12-х символов - это день недели, месяц, месяц-день, затем набирается 8 символов времени, а затем, наконец, год. Можно создать такие функции, как это:

char * gettime() 
{ 
    time_t t; 

    //use static so not to save the var in stack, but in the data/bss segment 
    //you can also make it a global scope, use dynamic memory allocation, or 
    //use other methods as to prevent it from being erased when the function returns. 
    static char * time_str; 


    time(&t); 
    time_str = ctime(&t) + 11; 
    time_str[9] = 0; //null-terminator, eol 

    return time_str; 
} 

char * getdate() 
{ 
    time_t t; 

    static char * date_str; 
    static char * year; 

    time(&t); 
    date_str = ctime(&t) + 4; 
    date_str[6] = 0; 

    year = date_str + 15; 
    year[5] = 0; 

    strcat(date_str, year); 

    return date_str; 
} 

Второй способ сделать это с помощью функции МестноеВремя() для создания TM--структуру, а затем извлечь то, что вам нужно от него.

char * gettime() 
{ 
    time_t t; 
    struct tm *info; 
    static char time_str[10]; 

    time(&t); 
    info = localtime(&t); 
    sprintf(time_str,"%d:%d:%d",(*info).tm_hour, (*info).tm_min, (*info).tm_sec); 

    return time_str; 
} 

char * getdate() 
{ 
    time_t t; 
    struct tm *info; 
    static char date_str[12]; 

    time(&t); 
    info = localtime(&t); 
    sprintf(date_str,"%d/%d/%d",(*info).tm_mday, (*info).tm_mon+1, (*info).tm_year+1900); 

    return date_str; 
} 

Вы можете сделать его немного более чистым, используя функцию STRFTIME():

char * gettime() 
{ 
    time_t t; 
    struct tm *info; 
    static char time_str[10]; 

    time(&t); 
    info = localtime(&t); 
    strftime(time_str, 10, "%S:%M:%H",info); 

    return time_str; 
} 

char * getdate() 
{ 
    time_t t; 
    struct tm *info; 
    static char date_str[12]; 

    time(&t); 
    info = localtime(&t); 
    strftime(date_str, 12, "%d:%m:%Y",info); 

    return date_str; 
} 
Смежные вопросы