導航:首頁 > 編程系統 > linuxpdtgmt

linuxpdtgmt

發布時間:2024-09-19 00:30:07

linux下C語言獲得系統時間的方法

沒有完整程序, 不過能提供一點資料

int gettimeofday(struct timeval * tv,struct timezone *tz);
這個函數可以獲取當前時間, 貌似只要第一個結構體就行了

struct timeval
{
time_t tv_sec; //秒 [long int]
suseconds_t tv_usec; //微秒 [long int], (10E-6 second)
};
struct timeval
{
long tv_sec;
long tv_usec;
};

然後取微秒的前三位就是小數了, 之後把秒 tv_sec 轉化為 tm 格式, 參數用秒的指針就行

struct tm * gmtime(const time_t * t);
//轉換成格林威治時間。有時稱為GMT或UTC。
struct tm * localtime(const time_t *t);
//轉換成本地時間。它可以透過修改TZ環境變數來在一台機器中,不同使用者表示不同時間.

下面是tm的部分參數

int tm_sec; //tm_sec表「秒」數,在[0,61]之間,多出來的兩秒是用來處理跳秒問題用的。/* Seconds: 0-59 (K&R says 0-61?) */
int tm_min; //tm_min表「分」數,在[0,59]之間。
int tm_hour; //tm_hour表「時」數,在[0,23]之間。
int tm_mday; //tm_mday表「本月第幾日」,在[1,31]之間。
int tm_mon; //tm_mon表「本年第幾月」,在[0,11]之間。
int tm_year; //tm_year要加1900表示那一年。 /* /* 年份,其值從1900開始 */*/
int tm_wday; //tm_wday表「本周第幾日」,在[0,6]之間。 /* Days since Sunday (0-6) */ /*其中0代表星期天,1代表星期一,以此類推 */
int tm_yday; //tm_yday表「本年第幾日」,在[0,365]之間,閏年有366日。 /*其中0代表1月1日,1代表1月2日,以此類推 */*/
int tm_isdst; //tm_isdst表是否為「日光節約時間」

------------------------------華麗麗的分割線--------------------------------------------------
由於很長時間沒編程了, 也沒有Linux環境, 我就簡單寫幾行代碼, 僅作參考

#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include<unistd.h>
//這四個不一定夠用了

struct timeval tv;
struct timezone tz;
struct tm * p_tm;
//變數沒有初始化習慣不好,不要學

gettimeofday(&tv, &tz);
p_tm = gmtime( (const time_t *)&tv.tv_sec );

字元串的組裝尤其格式問題自己解決吧
年 p_tm->tm_year+ 1900
月 p_tm->tm_mon+ 1
日 p_tm->tm_mday
時 p_tm->tm_hour+ 1
分 p_tm->tm_min+ 1
秒 p_tm->tm_sec+ 1
小數點後面的部分,注意不夠三位還是前面填充0 tv.tv_sec/1000

⑵ 怎樣開啟linux系統下的ntp同步請求

Linux 系統安裝配置NTP時間伺服器

NTP(The Network Time Protocol) 是網路時間協議,用以同步網路內計算機的時間。
它通過udp包交換,用特定演算法進行協商,從而把計算機上的時間與時間伺服器上的
時間保持一致。通過互聯網它支持的誤差是10毫秒,區域網則可以達到200微秒。

NTP時間伺服器分為多層,從0層到4層,每層依次與上一次伺服器同步,最高層的伺服器
則直接連接一個高精度的時鍾設備,比如原子鍾、GPS或者電波時等。

自己搭建時間伺服器需要指定一個上層的時間伺服器,然後它可以向區域網內的其它機器
提供同步服務。
詳細信息可以見:
http://en.wikipedia.org/wiki/Network_Time_Protocol

安裝NTP Server

Linux系統內核提供了對NTP的支持,因此只需要再安裝一個NTP Server的守護進程即可。
常用的ntpd由ntp.org提供。
下載安裝ntpd的穩定版本。目前是ntp-4.2.6p3.

http://www.ntp.org/downloads.html
示範腳本::

wget http://www.eecis.udel.e/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.6p3.tar.gz
tar zxf ntp-4.2.6p3.tar.gz
mkdir /app/ntp
cd ntp-4.2.6p3
./configure --prefix=/app/ntp --enable-all-clocks --enable-parse-clocks
make clean && make check && make && make intall

注意:/app/ntp為ntpd的安裝後文件路徑

配置

1. 配置文件位置為::

/etc/ntp.conf
2. 修改配置允許區域網內機器與該伺服器進行時間同步。
將下面語句::
restrict default kod nomodify notrap nopeer noquery
修改為::

restrict default nomodify
3. 修改上一層的時間伺服器。
ntp.org現在提供NTP POOL PROJECT,即ntp 伺服器池項目。在中國區域,配置如下即可::
server 0.cn.pool.ntp.org
server 0.asia.pool.ntp.org
server 2.asia.pool.ntp.org
其中0.cn 是中國伺服器池,後面兩個是亞洲的伺服器池。

最新列表見:

http://www.pool.ntp.org/zone/cn

啟動 NTP 伺服器

進入ntpd安裝後的路徑,如/app/ntd, 啟動參數如下::
./ntpd -c /etc/ntp.conf -p /tmp/ntpd.pid -l /app/ntp/log/ntp.log
注意啟動後需要等幾分鍾,否則其它機器來同步時會得到

no server suitable for synchronization found
的錯誤。

Linux客戶端機器配置

客戶端機器使用ntpdate 程序來執行同步。 格式如下::

ntpdate ntp-server-ip
如果需要配置計劃任務,命令如下::
# 查看是否已經添加時間同步的計劃任務
cat /etc/crontab

# 如果沒有則添加下列行,每30分鍾同步一次:
echo '*/30 * * * * root /usr/sbin/ntpdate 10.20.219.43' >> /etc/crontab

# 將計劃任務設為自動,默認是啟動的【可選】
chkconfig crond on

# 啟動計劃任務服務
service crond restart
# 有些機器需要設置時區為中國
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

閱讀全文

與linuxpdtgmt相關的資料

熱點內容
編程用蘋果 瀏覽:659
51虛擬機的文件管理在哪裡 瀏覽:13
win10系統有沒有便簽 瀏覽:722
java引用傳遞和值傳遞 瀏覽:109
oracle下載安裝教程 瀏覽:854
php篩選資料庫 瀏覽:830
怎麼用手機看wlan密碼 瀏覽:745
奧維地圖導入的文件在哪裡 瀏覽:364
sdltrados2014教程 瀏覽:43
培訓制度文件在哪裡找 瀏覽:601
勒索病毒防疫工具 瀏覽:861
win10c不能打開 瀏覽:375
xfplay影音先鋒蘋果版 瀏覽:597
兩個文件打開兩個word 瀏覽:921
蘋果6s桌面圖標輕微抖動 瀏覽:326
如何刪除手機中看不見的臨時文件 瀏覽:469
安卓412原生鎖屏apk 瀏覽:464
書加加緩存文件在哪裡 瀏覽:635
dock是word文件嗎 瀏覽:267
社保公司新辦去哪個網站下載資料 瀏覽:640

友情鏈接