社区
Linux/Unix社区
帖子详情
怎样在 毫秒 的量级上修改系统的时间?
qdzhulf
2004-03-15 05:40:14
请问,怎样在 毫秒 的量级上修改系统的时间?即精确到毫秒.
多谢!
...全文
146
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);
}
【ROS】ROS2日志
时间
戳转标准
时间
格式的轻
量级
解决方案
本文针对ROS2默认Unix
时间
戳不易阅读的问题,提出了一种轻
量级
解决方案。通过编写Python脚本作为实时日志过滤器,利用正则表达式匹配并转换
时间
戳为标准时分秒格式,无需
修改
ROS2核心源码,即可在调试时显著提升日志可读性。
RunAsDate:实现进程级
时间
隔离的轻
量级
解决方案
在软件开发与测试领域,
时间
相关功能的验证一直是技术团队面临的重要挑战。无论是电商
系统
的促销活动触发、会员订阅的自动续费机制,还是游戏的每日任务重置逻辑,都依赖于精准的
时间
控制。传统测试方法中,
修改
系统
时间
会影响全局应用,编写Mock代码则侵入业务逻辑,而真实等待又带来极高的
时间
成本。RunAsDate作为一款轻
量级
时间
模拟工具,通过进程级
时间
虚拟化技术,为开发者提供了安全、高效的
时间
测试环境。本文
java日期
时间
D a t e DateDate类对象生成的时候存储的就是当前的
系统
时间
,打印就是格式化打印(友好),g e t T i m e ( ) getTime()getTime()方法获得
时间
毫秒
值,可以进行
时间
转换计算,s e t T i m e ( ) setTime()setTime()方法可以利用
时间
毫秒
值来为D a t e DateDate对象进行改值,并且D a t e DateDate类对象的构造方法支持传入
时间
毫秒
值进行构造。)只有这样才能够正确的转化。
一个轻
量级
的日期
时间
处理库——date-and-time
一个轻
量级
的日期
时间
处理库——date-and-time 1. 项目基础介绍 date-and-time 是一个由 CSDN公司 开发的轻
量级
日期
时间
处理库,主要使用 JavaScript 编程语言编写。该项目旨在为开发者提供一个简单、易于学习和使用的日期
时间
处理工具,特别适用于需要在底层依赖链中处理日期和
时间
的模块。 2. 项目核心功能 该库的核心功能包括: 日期
时间
格式化:将日期
时间
对象转换...
ArdaTask:面向MCU的轻
量级
时间
驱动任务调度框架
在嵌入式裸机开发中,多任务调度需兼顾确定性、低开销与可验证性。基于
时间
事件分发模型,该类框架通过静态任务表与位图掩码机制,将周期性任务触发转化为O(1)位操作,彻底规避动态内存分配、上下文切换及模运算开销。其核心价值在于为资源受限MCU(如Cortex-M系列、RISC-V)提供硬实时能力支撑,适用于传感器采集、LED控制、通信心跳等
毫秒
级定时场景。ArdaTask作为典型代表,以单头文件、零配置、64位滴答计数器和原子化pending标志,强化了工业级长期运行的鲁棒性与安全认证适配性。
Linux/Unix社区
23,223
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章