按照大佬的思路再优化一下,年月日也出来了
4e601478-0a58-4e38-8e75-58e78ab15e25-image.png
优化了上面大佬回答中的rcutils_time_point_value_as_hmsms_string
rcutils_ret_t rcutils_time_point_value_as_hmsms_string(
const rcutils_time_point_value_t * time_point,
char * str,
size_t str_size)
{
RCUTILS_CHECK_ARGUMENT_FOR_NULL(time_point, RCUTILS_RET_INVALID_ARGUMENT);
RCUTILS_CHECK_ARGUMENT_FOR_NULL(str, RCUTILS_RET_INVALID_ARGUMENT);
if (0 == str_size) {
return RCUTILS_RET_OK;
}
int64_t seconds = *time_point / (1000 * 1000 * 1000);
int64_t milliseconds = *time_point / 1000000u % 1000;
struct tm* timeinfo;
int year, month, day, hour, minute, second;
timeinfo = localtime(&seconds);
year = timeinfo->tm_year + 1900;
month = timeinfo->tm_mon + 1;
day = timeinfo->tm_mday;
hour = timeinfo->tm_hour;
minute = timeinfo->tm_min;
second = timeinfo->tm_sec;
if (rcutils_snprintf(
str, str_size, "%s%04d-%02d-%02d %02d:%02d:%02d.%03lu",
(*time_point >= 0) ? "" : "->", year, month, day, hour, minute, second, milliseconds) < 0)
{
RCUTILS_SET_ERROR_MSG("failed to format time point into string");
return RCUTILS_RET_ERROR;
}
return RCUTILS_RET_OK;
}
前面要加上 #include <time.h>
另外编译rcutils时还要需要先安装performance-test-fixture
sudo apt install ros-humble-performance-test-fixture