为了完善昨天没有完成的工作,今天过来把每一次登录时间也插入到数据库中,方便查询
从网上找了一些文档,加上自己的一些体会,写一些东西。呵呵
这也不是什么新的东西,也不是什么难的东西:)
1。头文件:
#include <time.h>
其中的一个结构体:
struct tm
{
int tm_sec;//seconds 0-59
int tm_min;//minutes 0-59
int tm_hour;//hours 0-23
int tm_mday;//day of the month 1-31
int tm_mon;//months since jan 0-11
int tm_year;//years from 1900
int tm_wday;//days since Sunday, 0-6
int tm_yday;//days since Jan 1, 0-365
int tm_isdst;//Daylight Saving time indicator
};
这里有比较清除的注释,我只做简单的一点解释,不过觉得有点画蛇添足:(
tm_sec,表示某一时刻的秒数,区间是0到59;
tm_min,表示某一时刻的分钟数,区间也是0到59;
tm_hour,表示某一时刻的小时数,区间0到23;
tm_day,表示当前时刻所在天数,区间0到31;
tm_mon,表示当前时刻所在月,区间0到11;
tm_year,表示当前时刻所在年,从1900年开始算起,例如2006年,这里的值就是2006-1900 = 106;
tm_wday,星期几,0表示星期日,区间0到6;
tm_yday,表示这天从1月1日开始,是第几天。区间0到365;
tm_isdst,表示是否实行夏令时,为正时,表示夏令时方式;为负时表示非夏令时方式;
2.函数:
double difftime(time_t time1,time_t time0);
用来计算两个时间点之间的时间差,是以秒为单位的。
time_t time(time_t *timer);
用来返回从1900年到当前时刻的时间,单位为秒。
struct tm * localtime(const time_t * timer)
用来将时间转换为当前地点时间。
还有很多的函数,这里不做一一介绍,有兴趣的朋友可以查看linux手册。
3.使用:
我是要把当前时间通过c语言insert到数据库中,因此,只用到上面介绍的两个函数。下面是我的代码:
oid main()
{
time_t now; //实例化time_t结构
struct tm *timenow; //实例化tm结构指针
time(&now);
//time函数读取现在的时间(国际标准时间非北京时间),然后传值给now
timenow = localtime(&now);
//localtime函数把从time取得的时间now换算成你电脑中的时间(就是你设置的地区)
sprintf(sql,"insert into usertable(logintime) values(%04d-%02d-%02d %02d-%02d-%02d')",
timenow->tm_year+1900,
timenow->tm_mon+1,
timenow->tm_mday,
timenow->tm_hour,
timenow->tm_min,
timenow->tm_sec)
这里大家注意到,为了满足数据库中时间日期格式,我们必须把localtime返回的tm结构中的数据,一个一个的分开插入。如果按照正常的时间
输出格式。如:
printf("%s",asctime(timenow));
这样输出的时间是这样的:Wed Oct 11 09:34:40 2006,是星期几,日期,时间,年这样的格式,无法输入到datetime格式的数据项中。
4.总结:
这篇文档是看了些网上文章和linux man的一些个人认识。如果哪里有不太专业,或者不正确的地方,请大家给予指正!谢谢!