输出ISO 8601格式的日期
Outputting date in ISO 8601 format
如何在C++中获得以下格式的日期:
2016-04-26T19:50:48Z
#include <chrono>
#include <ctime>
time_t _tm = time(NULL);
struct tm*curtime = localtime(&_tm);
并输出为asctime(curtime)
当前输出为:"Thu Apr 28 16:02:41 2016n"
文档是您的朋友:
std::time_t t
= std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
std::cout << std::put_time( std::localtime( &t ), "%FT%T%z" );
在我的系统中产生
2016-04-29T02:48:56+0200
基于@Uri的答案,该答案修复了一些错误,并以ISO8601格式显示了正确时区中的时间和毫秒:
auto now = std::chrono::system_clock::now();
std::time_t time = std::chrono::system_clock::to_time_t(now);
std::tm* now_tm = std::localtime(&time);
long long timestamp = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()).count();
std::cout << std::setfill('0')
<< std::put_time(now_tm, "%FT%H:%M:")
<< std::setw(2) << (timestamp / 1000) % 60 << '.'
<< std::setw(3) << timestamp % 1000
<< std::put_time(now_tm, "%z");
我将提供日历值的std::localtime
与提供精确方法的std::chrono
函数相结合。这是我的代码:
#include <ctime>
#include <chrono>
...
auto now = std::chrono::system_clock::now();
auto now_c = std::chrono::system_clock::to_time_t(now)
auto now_tm = std::localtime(&now_c);
auto now_since_epoch = now.time_since_epoch(); // since 1970
auto now_ms = std::chrono::duration_cast<std::chrono::milliseconds>(now_since_epoch).count();
std::cout << std::setfill('0') <<
std::setw(4) << now_tm->tm_year + 1900 << '-' <<
std::setw(2) << now_tm->tm_mon + 1 << '-' <<
std::setw(2) << now_tm->tm_mday << 'T' <<
std::setw(2) << now_ms % (24*60*60*1000) << ':' <<
std::setw(2) << now_ms % (60*60*1000) << ':' <<
std::setw(2) << now_ms % (60*1000) << '.' <<
std::setw(3) << now_ms % (1000);
虽然冗长,但它实际上做得比strftime少。
相关文章:
- 日期格式为C++
- 如何在QTableView中排序和更改日期格式
- 如何检查日期格式(日/月/年)是否正确C++
- 如何使用put_time()设置日期格式以删除前面的空格和零
- 在 c++ 中验证日期格式
- 使用字符串流设置日期格式
- 日期格式-将日期添加到日期
- 如何在黑莓10中将日期格式转换为字符串
- 提升公历日期格式会产生错误的结果
- Excel 国际日期格式
- 日期格式操作(年/月/日到月/日/年)
- 使用预处理器定义的日期格式
- 将日期格式Www-Mmm-dd hh:mm:ss yyyy转换为c++中的dd hh:mm:ss字符串
- 将字符串设置为日期格式
- 时间刻度到日期格式
- 转换日期格式
- 获取Win32系统日期格式字符串
- 在c++中自定义日期格式
- 如何检查日期格式的有效性(例如,%d/%m/%Y-%H:% m:%S)
- 以字符串形式返回整数值以进行日期格式设置