ROS 系统时钟显示北京时间

ros系统时钟显示北京时间

主要是备份一下显示时间的程序,懒得一直问gpt,而且每次结果都不太一样

在默认情况下,ROS 会使用系统时钟,即从系统的 Epoch(通常是 1970 年 1 月 1 日)开始计算的时间。

UTC(协调世界时,Coordinated Universal Time)是一种标准的时间测量方式,用于协调世界各地的时间。它是基于原子时的,通过使用原子钟等精确的设备来测量时间。
UTC 被设计成与格林尼治标准时间(GMT)保持几乎一致,实际上在大多数情况下二者是相等的。然而,UTC 使用原子钟技术,以确保时间的精确度,并且可以通过加入或删除闰秒来调整与地球自转的差异。

	std::time_t t = ros::Time::now().toSec();
	std::tm* local_time = std::localtime(&t);//localtime自动使用本地时区
	std::string number_str = std::to_string(ros::Time::now().toNSec() / 1000000);
    // 取后三个字符
    std::string last_three_digits = number_str.substr(number_str.length() - 3);
    
    std::cout << "北京时间:";
    std::cout << std::put_time(local_time, "%Y-%m-%d %H:%M:%S") << "."
              << last_three_digits << std::endl;//显示到毫秒	
    
	std::tm tm_utc = *std::gmtime(&t);//获取的是UTC时间
    tm_utc.tm_hour += 8;     //设置为东八区
    std::cout << "通过utc时间设置:" << std::endl;
    std::cout << std::put_time(&tm_utc, "%Y-%m-%d %H:%M:%S") << std::endl;

相对于UTC,时区可以通过添加或减去一定的小时和分钟来表示。例如,北京时间是 UTC+8,纽约时间是 UTC-5。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值