导航:首页 > 编程系统 > 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相关的资料

热点内容
js静态文件 浏览:846
javaredis存储对象 浏览:906
如何下载php文件 浏览:946
视频怎么变成mp3格式文件怎么打开 浏览:869
pe下找桌面文件win10 浏览:686
电脑微信复制文件还原 浏览:319
lol文件损坏修复 浏览:37
生活安卓 浏览:844
获取路由宽带账号密码错误 浏览:465
如何找到未保存的文件夹 浏览:252
xp系统怎么共享网络 浏览:663
苹果手机怎么打开pdf文件 浏览:392
win8拷文件很慢 浏览:337
linux建立textc文件 浏览:800
雕刻v型槽编程怎么计算 浏览:322
js怎么设置盒子循环播放 浏览:616
linux命令怎么打开 浏览:208
文件病毒是什么类型 浏览:522
iphone5c彩信设置 浏览:729
mide215字幕文件下载 浏览:565

友情链接