【发布时间】:2019-03-24 16:51:18
【问题描述】:
我正在使用 API 来检索 UNIX 时间,但它以字符串形式出现,即“1539944398000”
我想将其转换为 UNIX 时间,以便我可以对其进行操作(并最终仅提取小时/分钟以进行打印)。
这是我尝试过的代码:
String nextBusScheduled = client2.readStringUntil('<');
char bufScheduled[40];
strptime(bufScheduled, "%Y-%m-%d", nextBusScheduled);
这是我得到的错误:
cannot convert 'String' to 'tm*' for argument '3' to 'char* strptime(const char*, const char*, tm*)'
【问题讨论】:
-
在 C 中没有原生的
string类型。是char *的 typedef 吗? -
这是 C++ 吗?
String实际上是std::string还是别的什么? -
如果您有一个包含 Unix 时间戳的字符串,您可以使用
strtoll将其转换为time_t,然后通过调用localtime或gmtime将其转换为struct tm。 -
您的代码中没有
struct tm变量。strptime的第三个参数是它应该解码成的struct tm *。那你为什么要传递别的东西?当你的输入不是那种格式时,你为什么要求它解析%Y-%m-%d? -
1539944398000 看起来不像 Unix 时间。如果是 1539944398,那将是 10 月 19 日(即今天)白天的某个时间。但看起来有人会在几微秒内给你。
标签: c++ datetime time unix-timestamp