社区
Linux/Unix社区
帖子详情
怎样在 毫秒 的量级上修改系统的时间?
qdzhulf
2004-03-15 05:40:14
请问,怎样在 毫秒 的量级上修改系统的时间?即精确到毫秒.
多谢!
...全文
98
6
打赏
收藏
怎样在 毫秒 的量级上修改系统的时间?
请问,怎样在 毫秒 的量级上修改系统的时间?即精确到毫秒. 多谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wxywh
2004-03-16
打赏
举报
回复
例子:
unsigned char SetSysTime(struct NetData *net_data)
{
unsigned char h_year,l_year,month,day,hour,minute,second;
struct timeval tv;
struct timezone tz;
struct tm *p;
time_t timep,timeq;
int ret;
ret = IsTime(net_data->Data);
if (ret == FALSE)
{
printf("The net time data error.\n");
return -1;
}
memcpy(&h_year,net_data->Data,1);
memcpy(&l_year,(net_data->Data+1),1);
memcpy(&month,(net_data->Data+2),1);
memcpy(&day,(net_data->Data+3),1);
memcpy(&hour,(net_data->Data+4),1);
memcpy(&minute,(net_data->Data+5),1);
memcpy(&second,(net_data->Data+6),1);
ret = gettimeofday(&tv,&tz);
if (ret == -1)
{
printf("Gettimeofday error:%s\n",strerror(errno));
return 0;
}
ret = time(&timep);
if (ret == (time_t)-1)
{
printf("Time error:%s\n",strerror(errno));
return 0;
}
/*get local current time and date*/
p = localtime(&timep);
p = (struct tm *)alloca(sizeof(struct tm));
p->tm_year = (h_year*256 + l_year) - 1900;
p->tm_mon = month - 1;
p->tm_mday = day;
p->tm_hour = hour;
p->tm_min = minute;
p->tm_sec = second;
timeq = mktime(p);
tv.tv_sec = (long)timeq;
ret = settimeofday(&tv,&tz);
if (ret == -1)
{
printf("Settimeofday error:%s\n",strerror(errno));
return 0;
}
return 1;
}
注:该函数只精确到秒,只要略作修改,是可以精确到毫秒的。
timeval结构定义:
struct timeval
{
long tv_sec; //秒
long tv_usec; //微秒
};
blh
2004-03-16
打赏
举报
回复
#include <stdio.h>
#include <errno.h>
#include <time.h>
#include <sys/types.h>
#include <sys/time.h>
int set_date(struct tm *p_tm, unsigned long ms)
{
time_t when;
struct timeval tv;
when = mktime(p_tm);
if (when == -1)
return -1;
tv.tv_sec = when;
tv.tv_usec = ms;
return settimeofday(&tv, (struct timezone *)0);
}
int main()
{
struct tm tm;
// 1976年10月26日 11:15:0.10
memset(&tm, 0, sizeof(tm));
tm.tm_sec = 0;
tm.tm_min = 14;
tm.tm_hour = 14;
tm.tm_mday = 15;
tm.tm_mon = 6;
tm.tm_year = 2003 - 1900;
if (set_date(&tm, 10) == -1)
perror("set_date");
return 0;
}
blh
2004-03-16
打赏
举报
回复
不好意思看错问题了,:P
「已注销」
2004-03-15
打赏
举报
回复
有没有直接的系统调用可以这样更改时间啊?
jack_wq
2004-03-15
打赏
举报
回复
使用gettimeofday()可以直接实现!
blh
2004-03-15
打赏
举报
回复
#include <sys/time.h>
#include <errno.h>
// 最小精度10ms
void ms_sleep(unsigned long ms)
{
struct timeval tv;
tv.sec = ms / 1000;
tv.usec = (ms % 1000) * 1000;
while ((-1 == select(0, 0, 0, 0, &tv)) && (EINTR == errno);
}
ES中百亿数据如何
毫秒
级返回?
近年来公司业务迅猛发展,数据量爆炸式增长,随之而来的的是海量数据查询等带来的挑战,我们需要数据量在十亿,甚至百亿级别的规模时依然能以秒级甚至
毫秒
级的速度返回,这样的话显然离不开搜索引擎的帮助,在搜索...
计算机网络的
时间
,计算机网络
时间
同步技术原理介绍
1.前言由计算机网络
系统
组成的分布式
系统
,若想协调一致进行:IT行业的“整点开拍”、“秒杀”、“Leader选举”,通信行业的“同步组网”之类业务处理,
毫秒
级甚至微秒级的
时间
同步是重要基础之一。2.术语描述2.0 ...
一秒等于多少
毫秒
_新知|一秒有多长?你以为的“一瞬间”有多快?
来源:交汇点新闻客户端交汇点讯 寒暑易节,物换星移,宇宙中一切物质的起源与消失,世界上一切事物的诞生与灭亡,都与
时间
息息相关。“嘀嗒嘀嗒”,在分针与秒针不断交错间,
时间
一秒一秒流逝。然而,一秒到底有多...
linux
时间
同步,ntpd、ntpdate
一、window与linux
系统
时间
介绍 在Windwos中,
系统
时间
的设置很简单,界面操作,通俗易懂。而且设置后,重启,关机都没关系。
系统
时间
会自动保存在Bios的时钟里面,启动计算机的时候,
系统
会自动在Bios里面取硬件...
你真的理解计算机
时间
吗?
计算机
系统
是没有
时间
概念的机器,那么它是怎么来计算与管理
时间
的? 背景
时间
是一个非常抽象的问题,吸引着许多伟大的神学家、哲学家和物理学家花毕生精力去解释
时间
的本质是什么,然而依然没有定论。幸
Linux/Unix社区
23,124
社区成员
74,508
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章