Qt字符串转时间
Qt字符串转时间本地语言问题
问题
最近写了个解析git日志生成周报的“小”程序,需要解析git时间。
由于对git命令不太熟,决定采用QDateTime :: fromString()
转时间,但是该函数返回了空值。
百度了半天也没找到答案,我想可能大家是没我这么粗心吧。。。
代码如下:
1 |
|
result
中的时间格式为Sun May 9 17:19:49 2021 +0800
只考虑+0800
前面的部分Sun May 9 17:19:49 2021
查阅Qt assistant,发现可以采用如下代码将其转为QDateTime
1 |
|
发现qDebug()输出为空。
仔细查看Qt assistant, 发现QDateTime::fromString有如下的Note:
Note: Unlike the other version of this function, day and month names must be given in the user’s local language. It is only possible to use the English names if the user’s language is English.
原来是要使用本地语言才可以得到正确结果,所以需要形如周日 5月 23 20:17:39 2021
的字符串才可以。
解决方法
使用QLocale::toDateTime()
1 |
|
使用git命令格式化时间字符串
由于对git命令不熟,git官网Git - 查看提交历史 (git-scm.com)也没有详细介绍如果格式化时间字符串, 而且加上时间格式化语句还出现了其他过滤条件不起作用的问题,所以开始时一心想着用代码去解决该问题,后来发现还是直接用命令格式化最简单:
1 |
|
如果还有其他过滤条件,应该将其放到logDateFormat
前,否则可能导致过滤条件不起作用的问题。
总结
- Qt最好的资料还是 Qt assistant, 百度半天不如耐心看文档。
参考
- [stackoverflow](qt - Change the specified string to QDateTime - Stack Overflow) ↩
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!