【发布时间】:2021-03-27 06:56:04
【问题描述】:
有很多链接可以实现这一点,但我实际上无法从接受的答案中找到代码示例(不使用 boost),最有效的方法是什么:
char date[] = "2021-01-01";
long double seconds = SecondsSince1970(date);
以及类似 10000000000 或多少秒的输出?
编辑:(由 C++ 实现)
std::tm t = {};
std::istringstream ss("2010-11-04T23:23:01Z");
if (ss >> std::get_time(&t, "%Y-%m-%dT%H:%M:%S")){
std::cout << std::put_time(&t, "%c") << "\n" << std::mktime(&t) << "\n";
}
我想这个问题的一个扩展是如何复制这个 C++ 代码但不使用 istringstream 所以它不必分配内存,而是直接从原始 char [] 数组到秒?
【问题讨论】:
-
程序是否应该假设所有年份都有 365 天?
-
呃,我需要它与当前时间准确,所以当我转换回来时它是一样的。例如,在 python 中,我只是尝试了
time.time()并得到了1616828423.9408524所以类似的东西 -
这能回答你的问题吗? strtotime function in C
-
使用
strptime+mktime。 -
@AnttiHaapala 我已经看到,我在 Windows 上,我无法让它工作,而且这些答案中的任何一个都没有任何关于如何使用它们的例子,只是说使用它功能。我希望能够使用
char []来做到这一点,所以没有新的内存分配给istringstream,这可能吗?