當前位置:首頁 » 操作系統 » localtime源碼

localtime源碼

發布時間: 2022-08-12 02:15:01

1. 用c語言做數字時鍾每走一秒響一次,求大神告訴源代碼

「響一次」需要牽涉到圖形編程中的音樂播放問題,需要自己下載圖形編程相關庫文件,具體實現請自己在TODO里添加播放音樂的代碼

數字時鍾的實現很簡單,運用time.h相關函數即可

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
time_toldt=-1;
structtm*p;
boolPrintdate()
{
time_tt=time(NULL);
if(t!=oldt)
{
oldt=t;
p=localtime(&t);
system("cls");
printf("%d/%d/%d周",1900+p->tm_year,1+p->tm_mon,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);
switch(p->tm_wday)
{
case1:printf("一");break;
case2:printf("二");break;
case3:printf("三");break;
case4:printf("四");break;
case5:printf("五");break;
case6:printf("六");break;
case7:printf("日");break;
}
printf("%d:%02d:%02d",p->tm_hour,p->tm_min,p->tm_sec);
return1;
}
return0;
}
main()
{
while(1)
if(Printdate())
{
/*************TODO*************/
/**Forexample:printf("a");**/
}
return0;
}

2. c語言中讀取當前時間的源代碼

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

void main()
{
struct tm *newtime;
time_t long_time;
time( &long_time );
newtime = localtime( &long_time );
printf("%d-%d-%d-%d:%d:%d\n", newtime->tm_year + 1900,
newtime->tm_mon + 1,
newtime->tm_mday,
newtime->tm_hour,
newtime->tm_min, newtime->tm_sec);
}

3. C語言 電子時鍾源代碼程序 帶圖 謝謝 最好有注釋

#include <stdio.h>

#include <time.h>

#include"stdlib.h"

#include "windows.h"

void main ()

{

while(1)

{


time_t rawtime;

struct tm * timeinfo;


time ( &rawtime );

timeinfo = localtime ( &rawtime );

printf ( "07The current date/time is: %s", asctime (timeinfo) );


Sleep(1000);

system("cls");

}


}

4. VC 計時器源代碼

利用VC的api函數 settimer吧,建立一個定時器,然後響應定時器的消息,getlocaltime函數,獲得時間,wsprintf函數,轉化為字元串,然後輸出就可以了。

5. python爬蟲怎麼獲取動態的網頁源碼

一個月前實習導師布置任務說通過網路爬蟲獲取深圳市氣象局發布的降雨數據,網頁如下:

心想,爬蟲不太難的,當年跟zjb爬煎蛋網無(mei)聊(zi)圖的時候,多麼清高。由於接受任務後的一個月考試加作業一大堆,導師也不催,自己也不急。

但是,導師等我一個月都得讓我來寫意味著這東西得有多難吧。。。今天打開一看的確是這樣。網站是基於Ajax寫的,數據動態獲取,所以無法通過下載源代碼然後解析獲得。

從某不良少年寫的抓取淘寶mm的例子中收到啟發,對於這樣的情況,一般可以同構自己搭建瀏覽器實現。phantomJs,CasperJS都是不錯的選擇。

導師的要求是獲取過去一年內深圳每個區每個站點每小時的降雨量,執行該操作需要通過如上圖中的歷史查詢實現,即通過一個時間來查詢,而這個時間存放在一個hidden類型的input標簽里,當然可以通過js語句將其改為text類型,然後執行send_keys之類的操作。然而,我失敗了。時間可以修改設置,可是結果如下圖。

為此,僅抓取實時數據。選取python的selenium,模擬搭建瀏覽器,模擬人為的點擊等操作實現數據生成和獲取。selenium的一大優點就是能獲取網頁渲染後的源代碼,即執行操作後的源代碼。普通的通過 url解析網頁的方式只能獲取給定的數據,不能實現與用戶之間的交互。selenium通過獲取渲染後的網頁源碼,並通過豐富的查找工具,個人認為最好用的就是find_element_by_xpath("xxx"),通過該方式查找到元素後可執行點擊、輸入等事件,進而向伺服器發出請求,獲取所需的數據。

[python]view plain

  • #coding=utf-8

  • fromtestStringimport*

  • fromseleniumimportwebdriver

  • importstring

  • importos

  • fromselenium.webdriver.common.keysimportKeys

  • importtime

  • importsys

  • default_encoding='utf-8'

  • ifsys.getdefaultencoding()!=default_encoding:

  • reload(sys)

  • sys.setdefaultencoding(default_encoding)

  • district_navs=['nav2','nav1','nav3','nav4','nav5','nav6','nav7','nav8','nav9','nav10']

  • district_names=['福田區','羅湖區','南山區','鹽田區','寶安區','龍崗區','光明新區','坪山新區','龍華新區','大鵬新區']

  • flag=1

  • while(flag>0):

  • driver=webdriver.Chrome()

  • driver.get("hianCe/")

  • #選擇降雨量

  • driver.find_element_by_xpath("//span[@id='fenqu_H24R']").click()

  • filename=time.strftime("%Y%m%d%H%M",time.localtime(time.time()))+'.txt'

  • #創建文件

  • output_file=open(filename,'w')

  • #選擇行政區

  • foriinrange(len(district_navs)):

  • driver.find_element_by_xpath("//div[@id='"+district_navs[i]+"']").click()

  • #printdriver.page_source

  • timeElem=driver.find_element_by_id("time_shikuang")

  • #輸出時間和站點名

  • output_file.write(timeElem.text+',')

  • output_file.write(district_names[i]+',')

  • elems=driver.find_elements_by_xpath("//span[@onmouseover='javscript:changeTextOver(this)']")

  • #輸出每個站點的數據,格式為:站點名,一小時降雨量,當日累積降雨量

  • foreleminelems:

  • output_file.write(AMonitorRecord(elem.get_attribute("title"))+',')

  • output_file.write(' ')

  • output_file.close()

  • driver.close()

  • time.sleep(3600)

  • 文件中引用的文件testString只是修改輸出格式,提取有效數據。
  • [python]view plain

  • #Encoding=utf-8

  • defOnlyCharNum(s,oth=''):

  • s2=s.lower()

  • fomart=',.'

  • forcins2:

  • ifnotcinfomart:

  • s=s.replace(c,'')

  • returns

  • defAMonitorRecord(str):

  • str=str.split(":")

  • returnstr[0]+","+OnlyCharNum(str[1])


  • 一小時抓取一次數據,結果如下:

6. 求C++獲取系統時間源代碼,精確到毫秒

#include <iostream>
#include <windows.h>

using namespace std;

void main()
{

SYSTEMTIME time;//時間結構聲明,這個結構是系統的,
GetSystemTime( &time );//調用獲取系統時間api.
//GetLocalTime();這個函數是獲取本地時間api
char* t_y;
char* t_m;
char* t_h;
char* t_Min;
char* t_s;
char* t_Mi;
char* t_d;
char* t_w;

SYSTEMTIME time;//時間結構聲明,這個結構是系統的,
GetSystemTime( &time );//調用獲取系統時間api.
sprintf(t_y, "%d", time.wYear);//將年份格式輸出到t_y變數中
sprintf(t_m, "%d", time.wMonth);
sprintf(t_w, "%d", time.wDayOfWeek);
sprintf(t_d, "%d", time.wDay);
sprintf(t_h, "%d", time.wHour);
sprintf(t_Min, "%d", time.wMinute);
sprintf(t_s, "%d", time.wSecond);
sprintf(t_Mi, "%d", time.wMilliseconds);
printf("%s,%s,%s,%s,%s,%s,%s,%s",
time.wYear,
time.wMonth,
time.wDayOfWeek,
time.wDay,
time.wHour,
time.wMinute,
time.wSecond,
time.wMilliseconds);

}
/***
SYSTEM 結構成員如下:
SYSTEMTIME STRUCT
{
WORD wYear ; 年
WORD wMonth ;月
WORD wDayOfWeek ;星期,0=星期日,1=星期一...
WORD wDay ;日
WORD wHour ;時
WORD wMinute ;分
WORD wSecond ;秒
WORD wMilliseconds ;毫秒
}SYSTEMTIME ENDS
//***/

7. 源碼包安裝ntp後找不到/etc/ntp.conf配置文件

NTP伺服器在我這里,我想做客戶端連接,但是當我通過終端想打開etc/ntp.conf時,提示我沒有許可權!
找到文件能打開,但是是只讀的,不能修改,懇請高人指點如何修改這個文件。
三、什麼是NTP
為了實現時間同步,我們就需要用戶NTP(Network Time Protocol)這個協議。如圖1所示。簡單地說,NTP是用來使系統和一個精確的時間源保持時間同步的協議。筆者建議管理員最好在自己管理的網路中建立至少一台時間伺服器來同步本地時間。
如 果在一個公司的區域網中,如果讓每個員工通過手動的方式每隔一段時間去校準時間,不但不利於管理,而且校準目標時間源也不一定準確。公司區域網絡中不同計 算機的時間偏差尤其是客戶機/伺服器之間的時間偏差,就會對一些要求時間同步的服務產生影響。比如,為了管理方便,伺服器設置了一到下班時間便 賬號過期,用戶無法訪問Internet網路。而如果你的電腦時間與伺服器的時間不同步,當你為你下班時間未到,正准備發送郵件時,或許在伺服器的時間 上,你的賬號便過期了,從而導到無法發送郵件。解決這種問題的方法很簡單,就是建立一個能提供精確時間的伺服器,區域網內的所有電腦統一通過這台時間服務 器進行時間同步、校準。
四、NTP伺服器安裝
現在,我們就來介紹一下,如何在linux系統下,建立一個NTP伺服器吧。在本文中,我們採用的是Fedora 2操作系統作為例子 (其它版本Linux也可以,系統的配置類似)。
使用 RPM 安裝
首先輸入如下指令
rpm -q ntp
查詢本機是否安裝了NTP軟體包。如果沒有安裝的話,找到您的 Linux 的安裝光碟,mount 上後,查找以NTP開頭的軟體包名,然後安裝上去,就可以了!
rpm –ivh ntp-4.1.2-5.i386.rpm
五、NTP服務的設置
1.NTP軟體包的結構
NTP服務的配置文件:
/etc/ntp.conf :這個是 NTP 服務的主要配置文件,不同的Linux版本文件所在的目錄可能會不同!
與NTP服務有關的Linux 系統文件及目錄:
/usr/share/zoneinfo:這是個目錄,在這個目錄下是規定了各主要時區的時間設定文件,例如中國大陸地區的時區設置文件是 /usr/share/zoneinfo/Asia/Shanghai 。
/etc /sysconfig/clock:這個文件是Linux 的主要時區設定文件。每次啟動後,Linux 會自動讀取這個文件來設定系統預設要顯示的時間!比如這個文件內容為「ZONE=Asia/Shanghai」,這表示我們的時間設定使用 /usr/share/zoneinfo/Asia/Shanghai 這個文件!
/etc/localtime:這個文件是本地系 統的時間設定文件! 假設clock 文件裡面規定了使用的時間設定文件為 /usr/share/zoneinfo/Asia/Shanghai, Linux 系統就會將 Shanghai那個文件復制一份為 /etc/localtime ,所以系統的時間顯示就會以 Shanghai 那個時間設定文件為准。假設這台主機到了美國紐約,您只要將 /etc/sysconfig/clock 裡面的ZONE 設定成為ZONE="America/New_York" 並且將/usr/share/zoneinfo/America/New_York復製成為 /etc/localtime ,其它什麼設置都不需要改動,系統的顯示時間就是美國紐約當地的時間了!

與 NTP 及系統時間有關的執行文件:
/bin/date: Linux 系統上面的日期與時間修改及輸出命令。
/sbin /hwclock:因為主機的 BIOS 時間與 Linux 系統時間是分開的,所以使用 date 這個指令調整了時間之後,只是調整了linux的系統時間,還需要使用 hwclock 才能將修改過後的時間寫入 BIOS。這個命令必須root用戶才能執行 。
/usr/sbin/ntpd:NTP服務的守護進程文件,需要啟動它才能提供NTP服務。
/usr/sbin/ntpdate:NTP客戶端用來連接NTP伺服器命令文件。
2.NTP服務端的設置
編輯 /etc/ntp.conf 文件
關於許可權設定部分
許可權的設定主要以 restrict 這個參數來設定,主要的語法為:
restrict IP地址 mask 子網掩碼 參數
其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP
參數有以下幾個:
ignore:關閉所有的 NTP 聯機服務
nomodify:客戶端不能更改服務端的時間參數,但是客戶端可以通過服務端進行網路校時。
notrust :客戶端除非通過認證,否則該客戶端來源將被視為不信任子網
noquery :不提供客戶端的時間查詢
注意:如果參數沒有設定,那就表示該 IP (或子網)沒有任何限制!
上級時間伺服器的設定
由於我們配置的NTP 伺服器需要網路上面時間比較准確的NTP伺服器來更新自己的時間,所以在我們的 NTP 伺服器上面要配置一部上級時間伺服器來進行校準!在 Internet 上面提供了許多時間伺服器,從下面地址找一個離你最近的

用server這個參數設定上級時間伺服器,語法為:
server IP地址或域名 [prefer]
IP地址或域名就是我們指定的上級時間伺服器,如果 Server 參數最後加上 prefer,表示我們的 NTP 伺服器主要以該部主機時間進行校準。
解決NTP伺服器校準時間時的傳送延遲
使用driftfile參數設置:
driftfile 文件名
在與上級時間伺服器聯系時所花費的時間,記錄在driftfile參數後面的文件內。
注意: driftfile 後面接的文件需要使用完整的路徑文件名,不能是鏈接文件,並且文件的許可權需要設定成 ntpd守護進程可以寫入。
ntp.conf文件舉例:
設置要求:不對 Internet 提供服務,僅對內部子網 192.168.0.0/24 提供服務,NTP 伺服器的上級時間主機為:clock.nc.fukuoka-u.ac.jp和ntp.nasa.gov,內部子網的客戶端不能修改NTP伺服器的時間參數。
在ntp.conf中增加以下內容:
restrict default ignore# 關閉所有的 NTP 要求封包
restrict 127.0.0.1 # 開啟內部遞歸網路介面 lo
restrict 192.168.0.0 mask 255.255.255.0 nomodify #在內部子網裡面的客戶端可以 進行網路校時,但不能修改NTP伺服器的時間參數。
server 133.100.9.2 prefer #用133.100.9.2做上級時間伺服器
server 198.123.30.132 #198.123.30.132作為上級時間伺服器參考
restrict 133.100.9.2 #開放server 訪問我們ntp服務的許可權
restrict 198.123.30.132
driftfile /var/lib/ntp/drift
保存退出後。啟動NTP服務
service ntpd start
如果想每次系統啟動,NTP服務自動啟動,請輸入下面命令: chkconfig -level 35 ntpd on 注意:
1.NTP服務的埠是123,使用的是udp協議,所以NTP伺服器的防火牆必須對外開放udp 123這個埠。
2.Ntpd啟動的時候通常需要一段時間進行時間同步,所以在ntpd剛剛啟動的時候還不能正常提供時鍾服務,最長大概有5分鍾吧,如果超過了這個時間請檢查一下您的配置文件。
六、NTP客戶端的使用
Linux系統
在Linux 上面進行網路校時非常簡單,執行 ntpdate 即可:
ntpdate 192.168.0.1 #192.168.0.1是NTP伺服器的IP
不要忘了使用hwclock命令,把時間寫入bios
hwclock -w
如果想定時進行時間校準,可以使用crond服務來定時執行。
編輯 /etc/crontab 文件
加入下面一行:
30 8 * * * root /usr/sbin/ntpdate 192.168.0.1; /sbin/hwclock -w #192.168.0.1是NTP伺服器的IP地址
然後重啟crond服務
service crond restart
這樣,每天 8:30 Linux 系統就會自動的進行網路時間校準。
Windows 系統
在 Windows XP上面使用NTP進行時間校準也很簡單:
雙擊桌面任務欄上的時間,彈出「日期和時間」屬性窗口,如圖所示:
選擇Internet時間,在伺服器中填入你的NTP伺服器的IP地址或者域名,然後點擊立即更新,您的系統時間就會立即更新。如果想定時更新,把左上角的自動與Internet時間伺服器同步選中,然後點擊右下角的應用即可。
yy-2-3.tif
如 果不是Windows XP系統,但是NTP伺服器同時也是samba伺服器的話,則對Windows來說,不需要安裝任何時間同步軟體,因為Windows客戶端可以用net time\\時間伺服器IP或伺服器netbios名/set/yes來同步。可以把該命令放在開始菜單的啟動項中,啟動windows時自動同步。

由於net time命令是利用Netbios over TCP/IP協議來同步時間,所以NTP伺服器不同時是samba 伺服器的話,就需要Windows客戶端安裝時間同步軟體。這方面的軟體很多,使用也很簡單,讀者可以上網查找一下。

8. 求一個c語言寫一個時間動態表要源代碼

用到的數據結構:
time_t是一個long類型 代表機器時間,可由time( )函數獲得。

日歷時間用一個(char *) 類型的字元串表示。格式為:星期 月 日 小時:分:秒 年\n\0
可由函數ctime( ) asctime( ) 得到。

以tm結構表達的時間,結構tm定義如下:
struct tm { 可由函數localtime( ), gmtime( )得到
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst; };
//系統日期
struct date {
int da_year; /* Year - 1980 */
char da_day; /* Day of the month */
char da_mon; /* Month (1 = Jan) */ };
//系統時間
struct time {
unsigned char ti_min; /* Minutes */
unsigned char ti_hour; /* Hours */
unsigned char ti_hund; /* Hundredths of seconds */
unsigned char ti_sec; /* Seconds */ };

用到的函數:
char * asctime(struct tm * ptr) 將tm結構的時間轉化為日歷時間。
char *ctime(long time) 將機器時間轉化為日歷時間。
struct tm *gmtime(time_t *time) 將機器時間轉化為tm時間

當ptr為空時,得到機器時間;非空時,設置機器時間。
time_t time(time_t *ptr) 得到或設置機器時間
double difftime(time_t time2, time_t time1) 得到兩次機器時間差,單位為秒

long dostounix(struct data *d, struct time *t) 將DOS的日期和時間格式轉換成UNIX標准
(機器時間(用到dos.h庫).void unixtodos(long utime, struct date *d, struct time *t)
將UNIX格式的時間和日期轉換成DOS格式(由time 和date兩部分組成,只能由機器時間得到,並且用到dos.h庫)
void getdate(struct date *d) 得到系統日期,d 存放得到的日期信息
void setdate(struct date *d)
void gettime(struct date *t) 得到系統時間 d 存放得到的時間信息
void settime(struct date *t)

C語言的標准庫函數包括一系列日期和時間處理函數,它們都在頭文件中說明。下面列出了這些函數。
在頭文件中定義了三種類型:time_t,struct tm和clock_t。

在中說明的C語言時間函數

time_t time(time_t *timer);

double difftime(time_t time1,time_t time2);

struct tm *gmtime(const time_t *timer);

struct tm *localtime(const time_t *timer);

char *asctime(const struct tm *timeptr);

char *ctime(const time_t *timer);

size_t strftime(char *s,size_t maxsize,const char *format,const struct tm *timeptr);

time_t mktime(struct tm *timeptr);

clock_t clock(void);

下面是我從網上收集到的時間函數集
asctime(將時間和日期以字元串格式表示)
相關函數
time,ctime,gmtime,localtime
表頭文件
#i nclude
定義函數
char * asctime(const struct tm * timeptr);
函數說明
asctime()將參數timeptr所指的tm結構中的信息轉換成真實世界所使用的時間日期表示方法,然後將結果以字元串形態返回。
此函數已經由時區轉換成當地時間,字元串格式為:"Wed Jun 30 21:49:08 1993\n"
返回值
若再調用相關的時間日期函數,此字元串可能會被破壞。此函數與ctime不同處在於傳入的參數是不同的結構。
附加說明
返回一字元串表示目前當地的時間日期。
範例
#i nclude
main()
{
time_t timep;
time (&timep);
printf("%s",asctime(gmtime(&timep)));
}
執行
Sat Oct 28 02:10:06 2000

ctime(將時間和日期以字元串格式表示)
相關函數
time,asctime,gmtime,localtime
表頭文件
#i nclude
定義函數
char *ctime(const time_t *timep);
函數說明
ctime ()將參數timep所指的time_t結構中的信息轉換成真實世界所使用的時間日期表示方法,然後將結果以字元串形態返回。
此函數已經由時區轉換成當地時間,字元串格式為"Wed Jun 30 21 :49 :08 1993\n"。若再調用相關的時間日期函數,此字元串可能會被破壞。
返回值
返回一字元串表示目前當地的時間日期。
範例
#i nclude
main()
{
time_t timep;
time (&timep);
printf("%s",ctime(&timep));
}
執行
Sat Oct 28 10 : 12 : 05 2000

gettimeofday(取得目前的時間)
相關函數
time,ctime,ftime,settimeofday
表頭文件
#i nclude
#i nclude
定義函數
int gettimeofday ( struct timeval * tv , struct timezone * tz )
函數說明
gettimeofday()會把目前的時間有tv所指的結構返回,當地時區的信息則放到tz所指的結構中。
timeval結構定義為:
struct timeval{
long tv_sec; /*秒*/
long tv_usec; /*微秒*/
};
timezone 結構定義為:
struct timezone{
int tz_minuteswest; /*和Greenwich 時間差了多少分鍾*/
int tz_dsttime; /*日光節約時間的狀態*/
};
上述兩個結構都定義在/usr/include/sys/time.h。tz_dsttime 所代表的狀態如下
DST_NONE /*不使用*/
DST_USA /*美國*/
DST_AUST /*澳洲*/
DST_WET /*西歐*/
DST_MET /*中歐*/
DST_EET /*東歐*/
DST_CAN /*加拿大*/
DST_GB /*大不列顛*/
DST_RUM /*羅馬尼亞*/
DST_TUR /*土耳其*/
DST_AUSTALT /*澳洲(1986年以後)*/
返回值
成功則返回0,失敗返回-1,錯誤代碼存於errno。附加說明EFAULT指針tv和tz所指的內存空間超出存取許可權。
範例
#i nclude
#i nclude
main(){
struct timeval tv;
struct timezone tz;
gettimeofday (&tv , &tz);
printf("tv_sec; %d\n", tv,.tv_sec) ;
printf("tv_usec; %d\n",tv.tv_usec);
printf("tz_minuteswest; %d\n", tz.tz_minuteswest);
printf("tz_dsttime, %d\n",tz.tz_dsttime);
}
執行
tv_sec: 974857339
tv_usec:136996
tz_minuteswest:-540
tz_dsttime:0

gmtime(取得目前時間和日期)
相關函數
time,asctime,ctime,localtime
表頭文件
#i nclude
定義函數
struct tm*gmtime(const time_t*timep);
函數說明
gmtime()將參數timep 所指的time_t 結構中的信息轉換成真實世界所使用的時間日期表示方法,然後將結果由結構tm返回。
結構tm的定義為
struct tm
{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
};
int tm_sec 代表目前秒數,正常范圍為0-59,但允許至61秒
int tm_min 代表目前分數,范圍0-59
int tm_hour 從午夜算起的時數,范圍為0-23
int tm_mday 目前月份的日數,范圍01-31
int tm_mon 代表目前月份,從一月算起,范圍從0-11
int tm_year 從1900 年算起至今的年數
int tm_wday 一星期的日數,從星期一算起,范圍為0-6
int tm_yday 從今年1月1日算起至今的天數,范圍為0-365
int tm_isdst 日光節約時間的旗標
此函數返回的時間日期未經時區轉換,而是UTC時間。
返回值
返回結構tm代表目前UTC 時間
範例
#i nclude
main(){
char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
time_t timep;
struct tm *p;
time(&timep);
p=gmtime(&timep);
printf("%d%d%d",(1900+p->tm_year), (1+p->tm_mon),p->tm_mday);
printf("%s%d;%d;%d\n", wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec);
}
執行
2000/10/28 Sat 8:15:38

localtime(取得當地目前時間和日期)
相關函數
time, asctime, ctime, gmtime
表頭文件
#i nclude
定義函數
struct tm *localtime(const time_t * timep);
函數說明
localtime()將參數timep所指的time_t結構中的信息轉換成真實世界所使用的時間日期表示方法,然後將結果由結構tm返回。
結構tm的定義請參考gmtime()。此函
數返回的時間日期已經轉換成當地時區。
返回值
返回結構tm代表目前的當地時間。
範例
#i nclude
main(){
char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
time_t timep;
struct tm *p;
time(&timep);
p=localtime(&timep); /*取得當地時間*/
printf ("%d%d%d ", (1900+p->tm_year),( l+p->tm_mon), p->tm_mday);
printf("%s%d:%d:%d\n", wday[p->tm_wday],p->tm_hour, p->tm_min, p->tm_sec);
}
執行
2000/10/28 Sat 11:12:22

mktime(將時間結構數據轉換成經過的秒數)
相關函數
time,asctime,gmtime,localtime
表頭文件
#i nclude
定義函數
time_t mktime(strcut tm * timeptr);
函數說明
mktime()用來將參數timeptr所指的tm結構數據轉換成從公元1970年1月1日0時0分0 秒算起至今的UTC時間所經過的秒數。
返回值
返回經過的秒數。
範例
/* 用time()取得時間(秒數),利用localtime()
轉換成struct tm 再利用mktine()將struct tm轉換成原來的秒數*/
#i nclude
main()
{
time_t timep;
strcut tm *p;
time(&timep);
printf("time() : %d \n",timep);
p=localtime(&timep);
timep = mktime(p);
printf("time()->localtime()->mktime():%d\n",timep);
}
執行
time():974943297
time()->localtime()->mktime():974943297

settimeofday(設置目前時間)
相關函數
time,ctime,ftime,gettimeofday
表頭文件
#i nclude
#i nclude
定義函數
int settimeofday ( const struct timeval *tv,const struct timezone *tz);
函數說明
settimeofday()會把目前時間設成由tv所指的結構信息,當地時區信息則設成tz所指的結構。詳細的說明請參考gettimeofday()。
注意,只有root許可權才能使用此函數修改時間。
返回值
成功則返回0,失敗返回-1,錯誤代碼存於errno。
錯誤代碼
EPERM 並非由root許可權調用settimeofday(),許可權不夠。
EINVAL 時區或某個數據是不正確的,無法正確設置時間。

time(取得目前的時間)
相關函數
ctime,ftime,gettimeofday
表頭文件
#i nclude
定義函數
time_t time(time_t *t);
函數說明
此函數會返回從公元1970年1月1日的UTC時間從0時0分0秒算起到現在所經過的秒數。如果t 並非空指針的話,
此函數也會將返回值存到t指針所指的內存。
返回值
成功則返回秒數,失敗則返回((time_t)-1)值,錯誤原因存於errno中。

9. 求LINUX下,C語言編寫的日誌輸出源碼~

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <dirent.h>
#include <time.h>
#define LOGFILE "./dir_log_0"
int g_Count;
//#define MAXLEN 1024
void WriteDebugLog(char *str);
int main(int argc, char **argv)
{
char str[1024]={0};
strcpy(str,"file no find");
int i=0,j=0;
for (i=0; i<10; i++)
{
for (j=0; j<50; j++)
{
WriteDebugLog(str);
}

}
return 0;
}
void WriteDebugLog(char *str)
{
char buf[2048]={0};
char logFileName[50]={0};
//long MAXLEN = 50*1024*1024;//50MB
int iMax = 1024;//1K
time_t timep;
FILE *fp = NULL;
struct tm *p;
time(&timep);
p = localtime(&timep);
memset(buf,0,sizeof(buf));
sprintf(buf,"[%d-%d-%d %d:%d:%d][DEBUG]",(1900+p->tm_year),(1+p->tm_mon), p->tm_mday,p->tm_hour, p->tm_min, p->tm_sec); //星期p->tm_wday
strcat(buf,str);
strcat(buf," ");
strcpy(logFileName,LOGFILE);
int len = strlen(logFileName);
logFileName[len-1] = Ɔ'+g_Count;
fp = fopen(logFileName,"r");
if(fp==NULL)
{
fp = fopen(logFileName,"w+");
}
else
{
fseek(fp,0,2);//SEEK_END值為2
if( ftell(fp) >= iMax)
{
fclose(fp);

if (g_Count >= 9)
{
logFileName[len-1] = Ɔ'
g_Count=0;
}
else
{
g_Count++;
logFileName[len-1] = Ɔ'+g_Count;
// printf(" %c",Ɔ'+g_Count);
}
fp = fopen(logFileName,"w+");
}
else
{
fclose(fp);
fp = fopen(logFileName,"a");
}
}
fwrite(buf,1,strlen(buf),fp);
fclose(fp);
}

熱點內容
盲人讀屏軟體安卓哪個好 發布:2025-01-15 20:47:13 瀏覽:727
炸圖腳本 發布:2025-01-15 19:56:07 瀏覽:428
八字源碼 發布:2025-01-15 19:54:47 瀏覽:371
伺服器可以變電腦使用嗎 發布:2025-01-15 19:40:29 瀏覽:201
傳奇手游免費腳本 發布:2025-01-15 19:30:21 瀏覽:300
我國當前資源配置存在哪些問題 發布:2025-01-15 19:25:03 瀏覽:514
存儲在哪裡呀 發布:2025-01-15 19:11:39 瀏覽:450
pythonuniquelist 發布:2025-01-15 19:10:41 瀏覽:477
怎麼升安卓系統下載 發布:2025-01-15 19:04:27 瀏覽:894
mcrypt擴展php 發布:2025-01-15 19:01:12 瀏覽:436