使用ICU库解析字符串中的时间戳,我做错了什么
Parsing a time stamp in a string using the ICU library, what am I doing wrong?
我正在尝试使用ICU库将时间戳从字符串转换为time_t值。
要做到这一点,我认为我所要做的就是创建一个时间实例并调用它的parse()
函数。不幸的是,我从解析器得到的只是U_ILLEGAL_ARGUMENT_ERROR。
有一个显示意外行为的简化版本的代码:
#include <iostream>
#include <unicode/datefmt.h>
#include <unicode/errorcode.h>
#include <unicode/locid.h>
#include <unicode/smpdtfmt.h>
#include <unicode/timezone.h>
int main(int argc, char *argv[])
{
LocalPointer<DateFormat> dt(DateFormat::createTimeInstance());
UErrorCode err(U_ZERO_ERROR);
UDate const result(dt->parse("12:05:33", err));
std::cerr << "*** err = " << u_errorName(err)
<< " and result = " << result << "n";
return 0;
}
当我运行这个时,输出是
*** err = U_ILLEGAL_ARGUMENT_ERROR and result = 0
我期待一些更像时间的表示,如12 x 3600 + 5 * 60 + 33 = 43533。
我做错了什么吗?从文档来看,这个库似乎能够转换各种类型的时间戳。
很可能,您的时间字符串的格式与createTimeInstance()
返回的DateFormat
对象的默认样式/区域设置不匹配。使用createTimeInstance()
的style
和aLocale
参数来指定parse()
应该期望的特定样式/区域设置。
相关文章:
- C++:floor unix时间戳到UTC月份
- 如何在c++中录制具有精确帧时间戳的视频
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- Google protobuf 时间戳未声明标识符,在 Windows 上具有C++
- 在多个时间戳处执行函数
- 以天C++为单位的两个时间戳之间的差异
- 获取 QInputEvent 在 Qt 4.8 中被放入 QEventLoop 队列时的时间戳
- 在 C++ 中为文件名添加时间戳
- 如何从远程 SFTP 服务器获取 HH-MM-SS 时间戳格式的文件列表
- 如何将消息时间戳写入日志文件?
- 将时间戳打印到流的最简单方法
- 读取悖论时间戳字段
- C++程序中多个位置的时间 (0) 时间戳
- 在 c++ 中获取 X 毫秒前的时间戳
- 将 unix 时间戳转换为人类可读的日期
- Microsoft NTLM (v2) 中的时间戳使用
- C++中上周一的时间戳
- C++和Java时间戳之间的区别是什么
- 从 C/C++ 中的日期和时间转换为 UNIX 时间戳的正确方法是什么?
- 使用ICU库解析字符串中的时间戳,我做错了什么