当前位置: 技术问答>linux和unix
linux 时间编程问题
来源: 互联网 发布时间:2017-05-14
本文导语: 在下最近在写一个有关与时间的程序,如下: /* * 获得本地时间 * 返回字符串格式"年_月_日" */ char *get_local_time_y_m_d() { time_t *the_time; struct tm tm_ymd; char *buf; the_time=(time_t *)malloc(sizeof(time_t)); //tm_ymd=(struct tm...
在下最近在写一个有关与时间的程序,如下:
这两个函数在程序中会经常调用,但是不论先调用了那个函数,在调用另一个的时候,程序立马错误推出。在网上查了查,是由于localtime和gmtime重复调用问题。在下想请问下各位,有没有什么能随时获得系统时间的方法,C语言
/*
* 获得本地时间
* 返回字符串格式"年_月_日"
*/
char *get_local_time_y_m_d()
{
time_t *the_time;
struct tm tm_ymd;
char *buf;
the_time=(time_t *)malloc(sizeof(time_t));
//tm_ymd=(struct tm *)malloc(sizeof(struct tm));
buf=(char *)malloc(sizeof(char)*16);
memset(buf,'',sizeof(char)*16);
//printf("%pn%pn",the_time,tm_ptr);
time(the_time);
//tm_ymd=gmtime(the_time);
localtime_r(the_time,&tm_ymd);
//memcpy(tm_ymd,localtime(the_time),sizeof(struct tm));
strftime(buf,16,"%Y_%m_%d",&tm_ymd);
free(the_time);
/*
* 看样子struct tm 结构似乎不能free
*/
//free(tm_ptr);
return buf;
}
/*
* 获得本地时间
* 返回字符串格式"时_分_秒"
*/
char *get_local_time_h_m_s()
{
time_t *the_time;
struct tm tm_hms;
char *buf;
the_time=(time_t *)malloc(sizeof(time_t));
//tm_hms=(struct tm *)malloc(sizeof(struct tm));
buf=(char *)malloc(sizeof(char)*16);
memset(buf,'',sizeof(char)*16);
//printf("%pn%pn",the_time,tm_ptr);
time(the_time);
//tm_hms=gmtime(the_time);
localtime_r(the_time,&tm_hms);
//memcpy(tm_hms,localtime(the_time),sizeof(struct tm));
strftime(buf,16,"%H:%M:%S",&tm_hms);
free(the_time);
/*
* 看样子struct tm 结构似乎不能free
*/
//free(tm_ptr);
return buf;
}
这两个函数在程序中会经常调用,但是不论先调用了那个函数,在调用另一个的时候,程序立马错误推出。在网上查了查,是由于localtime和gmtime重复调用问题。在下想请问下各位,有没有什么能随时获得系统时间的方法,C语言
|
我看了,改了一下,不知道 改没有改变你的意思:
#include
#include
#include
/*
* * 获得本地时间
* * 返回字符串格式"年_月_日"
* */
void get_local_time_y_m_d(char *buf)
{
time_t *the_time;
struct tm tm_ymd;
the_time=(time_t *)malloc(sizeof(time_t));
time(the_time);
localtime_r(the_time,&tm_ymd);
strftime(buf,16,"%Y_%m_%d",&tm_ymd);
printf("a time = %sn",buf);
free(the_time);
}
/*
* 获得本地时间
* 返回字符串格式"时_分_秒"
*/
void get_local_time_h_m_s(char *buf)
{
time_t *the_time;
struct tm tm_hms;
the_time=(time_t *)malloc(sizeof(time_t));
time(the_time);
localtime_r(the_time,&tm_hms);
strftime(buf,16,"%H:%M:%S",&tm_hms);
printf("b time = %sn",buf);
free(the_time);
}
int main()
{
char *buf = malloc(16);
memset(buf,0x00,16);
while (1)
{
get_local_time_h_m_s(buf);
get_local_time_y_m_d(buf);
}
free(buf);
}
这个怎么跑都没有问题,你程序出错,有可能是其他的地方,不要老盯着这个不放。
#include
#include
#include
/*
* * 获得本地时间
* * 返回字符串格式"年_月_日"
* */
void get_local_time_y_m_d(char *buf)
{
time_t *the_time;
struct tm tm_ymd;
the_time=(time_t *)malloc(sizeof(time_t));
time(the_time);
localtime_r(the_time,&tm_ymd);
strftime(buf,16,"%Y_%m_%d",&tm_ymd);
printf("a time = %sn",buf);
free(the_time);
}
/*
* 获得本地时间
* 返回字符串格式"时_分_秒"
*/
void get_local_time_h_m_s(char *buf)
{
time_t *the_time;
struct tm tm_hms;
the_time=(time_t *)malloc(sizeof(time_t));
time(the_time);
localtime_r(the_time,&tm_hms);
strftime(buf,16,"%H:%M:%S",&tm_hms);
printf("b time = %sn",buf);
free(the_time);
}
int main()
{
char *buf = malloc(16);
memset(buf,0x00,16);
while (1)
{
get_local_time_h_m_s(buf);
get_local_time_y_m_d(buf);
}
free(buf);
}
这个怎么跑都没有问题,你程序出错,有可能是其他的地方,不要老盯着这个不放。