C++日期库因时区而失败
C++ date library fails with timezone
这曾经玩过一次。我正在尝试从C++日期库中获取一些数据,但捕获了一个异常。我正在编译
-DUSE_AUTOLOAD=0 -DHAS_REMOTE_API=0 -DUSE_OS_TZDB=1
代码有什么问题?
#include <iostream>
#include "date/tz.h"
#include <exception>
using namespace date;
using namespace std::chrono;
int main(int argc, char** argv) {
try {
auto current_time_zone = make_zoned("Europe/Athens", std::chrono::system_clock::now());
auto current_day = date::format("%A", current_time_zone);
auto current_time = date::format("%H:%M", current_time_zone);
std::cout << "day: " << current_day << ", time: " << current_time << " in timezone: " << current_time_zone << std::endl;
//std::cout << " in timezone: " << current_time_zone << std::endl;
} catch ( std::exception& e) {
std::cout << e.what() << std::endl;
}
}
您需要使用-pthread
标志。tz.cpp
使用call_once
来执行部分初始化。没有-pthread
它将无法工作(因为它下面需要类似__gthread_once
的东西(。有关更多详细信息,请参阅此处。
您可以通过使用gdb
运行示例来验证这是否是问题所在(使用catch throw
(。
我不确定问题是什么,但我可以告诉你,这个库不会抛出包含消息"未知错误"的异常。
尝试将-DONLY_C_LOCALE=1
添加到生成标志。这将避免 std::lib 的time_put
方面,但会将您限制为仅"C"区域设置。如果这解决了问题,那么是你的 std::lib 的std::time_put
方面抛出了异常。
相关文章:
- 如果没有malloc,链表实现将失败
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- 视图中的参数推导失败:take_while
- 链接到自行创建的dll失败
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- gcc和c++17的过载解析失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 从父数组测试用例构造二叉树失败
- LibGit2 SSH身份验证失败
- 如何让LLDB在成功时退出,在失败时等待
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- Log4cpp:以UTC/GMT时区打印日期
- 生成MRPT库时cmake配置失败
- C++日期库因时区而失败