time操作
已有tm時間結構表示當前時間,求計算出前一天當前時間的時間結構的算法,大分相送
把tm用mktime轉化為time_t
time_t減去一天的秒數86400就得到前一天相應時間的time_t
再用gmtime轉化time_t為相應的tm時間
跨月份和跨年份的問題不用你自己考慮了
struct tm t;
// 假設t已經存好了當前的時間。
mktime(&t);
這樣就可以了。
呵呵,前一天是t.tm_mday--; 再mktime(&t);
mktime()本身就調整了t的值。
看手冊吧
time()
gettimeofday()
gmtime()
localtime()
mktime()
asctime()
ctime()
strftime()看你需要哪個了,呵呵
include <time.h>
time_t CurTime=time(NULL);
這樣就可以取得當前時間,不過需要通過其他的函數來轉換到字符串
我記得發過一次了,你自己用命令 man ctime 看看吧。
Linux下man是十分有用的,學會用它
另外time_t 實際上是一個整型從1997.1.1算起的秒數,不應該有小數點的。
直接取整,然后作為time_t來轉就好了!
得到以ASCII碼表示的時間 asctime?
得到字符串表示的時間 ??? ctime?
得到指定格式的時間 ????? strftime?
這樣能得到你要的格式【可是樓主那個時間是不是隨便舉的例子呀?我怎么1090424791.935得出的時間是2004-07-21 23:46:31呀?】:
#include <stdio.h>
#include <time.h>
int main()
{
?char timef[100];
?time_t t;
?struct tm *today;
?scanf("%ld",&t);
?today = localtime(&t);
?strftime(timef,100,"%Y-%m-%d %H:%M:%S",today);
?printf("%s/n",timef);
}
strftime
Syntax:?? #include <time.h>
? size_t strftime( char *str, size_t maxsize, const char *fmt, struct tm *time );
struct timeb {
??????? time_t time;
??????? unsigned short millitm;
??????? short timezone;
??????? short dstflag;
??????? };
#endif
typedef long time_t;
/*struct _timeb timebuffer;*/
?/*_ftime( &timebuffer );*/
?/*char *timeline;
?timeline = ctime( & ( timebuffer.time ) );
?userlog( "%s:time is %.19s.%hu %s/n", info,timeline, timebuffer.millitm, &timeline[20] );
?userlog( "%s:time is %.19s.%hu", info,timeline, timebuffer.millitm);
?*/
?/*userlog( "%s:time = %hu", info,timebuffer.millitm);*/
要計算代碼執行時間:可直接用:
clock_t(),是一個long型,注意,在unix下可能失效
?
總結
- 上一篇: 在SunOS5.8/solaris7上使
- 下一篇: 有关字节序