首页 > 解决方案 > 如何将字符串 UTC 时间格式 YYYYMMDDHHMMSS.MMMMMMSUTC 的时间转换为时间戳格式,将 DDDDDDDDHHMMSS.MMMMMM:000 转换为 C 中的间隔格式?

问题描述

通过运行命令

wmic OS Get LastBootUpTime

我以字符串 UTC 时间格式获取时间YYYYMMDDHHMMSS.MMMMMMSUTC。如果已知字符串是时间戳,则将其转换为时间戳格式:

typedef struct _Timestamp
{
    unsigned int year;
    unsigned int month;
    unsigned int day;
    unsigned int hour;
    unsigned int minute;
    unsigned int second;
    unsigned int microseconds;
    signed int utc;
}
Timestamp;

例如:时间:20210324111750.500000+330

如果isTimestamp = true

Timestamp.year = 2021
Timestamp.month = 03
Timestamp.day = 24
Timestamp.hour = 11
Timestamp.minute = 17
Timestamp.second = 50
Timestamp.microseconds = 500000
Timestamp.utc = +330

如果已知在区间内,则将字符串从DDDDDDDDHHMMSS.MMMMMM:000格式转换为区间格式:

typedef struct _Interval
{
    unsigned int days;
    unsigned int hours;
    unsigned int minutes;
    unsigned int seconds;
    unsigned int microseconds;
    unsigned int __padding1;
    unsigned int __padding2;
    unsigned int __padding3;
}
Interval;

例如:时间:00000324111750.500000:000

如果isTimestamp = false

Interval.days = 324
Interval.hours = 11
Interval.minutes = 17
Interval.seconds = 50
Interval.microseconds = 500000
Interval.__padding1 = 0
Interval.__padding2 = 0
Interval.__padding3 = 0

手动解析字符串似乎是一个很长的方法。

有人可以建议 C 内置函数来实现这一点。或者如果有现成的函数可以转换char *为上述时间格式。

标签: cdatetime

解决方案


推荐阅读