一、说明

本章到目前为止描述的示例程序以 2014-May-12 格式写入结果。 Boost.DateTime 允许您以不同的格式显示结果。日历日期和时间可以使用 boost::date_time::date_facet 和 boost::date_time::time_facet 格式化。

二、示例代码

Boost.DateTime 使用标准中的语言环境概念。要格式化日历日期,必须在语言环境中创建并安装 boost::date_time::date_facet 类型的对象。一个描述新格式的字符串被传递给 boost::date_time::date_facet 的构造函数。示例 36.20 传递“%A, %d %B %Y”,它指定星期几之后是完整的月份日期:2014 年 5 月 12 日星期一。

示例 36.20。用户定义的日期格式

#include <boost/date_time/gregorian/gregorian.hpp>
#include <iostream>
#include <locale>using namespace boost::gregorian;int main()
{date d{2014, 5, 12};date_facet *df = new date_facet{"%A, %d %B %Y"};std::cout.imbue(std::locale{std::cout.getloc(), df});std::cout << d << '\n';
}

Boost.DateTime 提供了许多格式标志,每个标志都由百分号后跟一个字符组成。 Boost.DateTime 的文档包含所有受支持标志的完整概述。

如果程序由位于德国或德语国家的人使用,最好用德语而不是英语显示工作日和月份。

示例 36.21。更改工作日和月份的名称

#include <boost/date_time/gregorian/gregorian.hpp>
#include <string>
#include <vector>
#include <locale>
#include <iostream>using namespace boost::gregorian;int main()
{std::locale::global(std::locale{"German"});std::string months[12]{"Januar", "Februar", "M\xe4rz", "April","Mai", "Juni", "Juli", "August", "September", "Oktober","November", "Dezember"};std::string weekdays[7]{"Sonntag", "Montag", "Dienstag","Mittwoch", "Donnerstag", "Freitag", "Samstag"};date d{2014, 5, 12};date_facet *df = new date_facet{"%A, %d. %B %Y"};df->long_month_names(std::vector<std::string>{months, months + 12});df->long_weekday_names(std::vector<std::string>{weekdays,weekdays + 7});std::cout.imbue(std::locale{std::cout.getloc(), df});std::cout << d << '\n';
}

可以通过将包含所需名称的向量传递给 boost::date_time::date_facet 类的成员函数 long_month_names() 和 long_weekday_names() 来更改工作日和月份的名称。示例 36.21 现在将 Montag, 12. Mai 2014 写入标准输出流。

注意
        要在 POSIX 操作系统上运行该示例,请将“German”替换为“de_DE”,并确保安装了 German 的语言环境。

Boost.DateTime 在格式化输入和输出方面是灵活的。除了输出类 boost::date_time::date_facet 和 boost::date_time::time_facet 之外,类 boost::date_time::date_input_facet 和 boost::date_time::time_input_facet 也可用于格式化输入。所有四个类都提供了成员函数来配置 Boost.DateTime 提供的不同对象的输入和输出。例如,可以指定 boost::gregorian::date_period 类型的周期如何输入和输出。要查看格式化输入和输出的所有可能性,请查看 Boost.DateTime 的文档。

【BOOST C++ 10 时间数据】(4)时间格式输入和输出(11-12)相关推荐

  1. 数据分析--matplotlib 设置时间数据的刻度格式

    数据分析--matplotlib 设置时间数据的刻度格式 数据分析--matplotlib 设置时间数据的刻度格式 数据分析–matplotlib 设置时间数据的刻度格式 在绘制图表时, 如果横轴是p ...

  2. C语言-格式输入与输出

    格式输入与输出 前言 1.格式输出函数printf 2.格式输入函数scanf 3.字符输出函数putchar 4.字符输入函数getchar     前言:格式输入输出函数有 输入函数printf( ...

  3. 《数据清洗》8.3.3 加载时间数据至时间维度表

    需求:数据库中生成86400条数据 每条数据对应一天的1秒 起始: 最终: 数据库表dim_time各个字段的含义: 报错原因: 表字段的名称和mysql表结构不一致. 表字段和mysql表字段数量不 ...

  4. 使用openssl完成aes-cbc模式的数据加解密,输入和输出都是字符串的形式

    代码 #include <cstring> #include <memory>#include <openssl/aes.h> #include <opens ...

  5. 使用openssl完成aes-ecb模式的数据加解密,输入和输出都是字符串类型

    代码 #include <cstring> #include <memory>#include <openssl/aes.h> #include <opens ...

  6. python 表格格式输出_利用python对excel中一列的时间数据更改格式操作

    问题场景:需要将下列的交期一列的数据格式更改成2019/05/10 存货编码 尺寸 数量 交期 0 K10Y0190000X B140 200 2019-05-10 00:00:00 1 K10Y01 ...

  7. 在hive中对日期数据进行处理,毫秒级时间转化为yyyy-MM-dd格式

    我们看到日志的时间是1414381913000 ,我们在需求中需要对每天的数据进行分析,所以需要对这个日志数据进行转化格式. 常用时间类型格式转换: from_unixtime(bigint unix ...

  8. python对excel数据更改_利用python对excel中一列的时间数据更改格式代码示例

    本篇文章小编给大家分享一下利用python对excel中一列的时间数据更改格式代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 问题场景:需要将 ...

  9. 用python对excel中一列的时间数据更改格式

    用python对excel中一列的时间数据更改格式 问题场景:需要将下列的交期一列的数据格式更改成2019/05/10 存货编码 尺寸 数量 交期 0 K10Y0190000X B140 200 20 ...

最新文章

  1. Python在ubuntu中更改Python和pip指向
  2. 常考数据结构与算法:重建二叉树
  3. PHP连接MSSQL
  4. mysql的二级分区_分布式数据库一级分区和二级分区
  5. mmap函数_分析由 mmap 导致的内存泄漏
  6. 决策过程并举例_成本效益分析举例
  7. Chrome浏览器去广告插件 —— (Adblock Plus)
  8. 关于中英文等宽字体的设置
  9. 许小年:企业家精神的衰落与重振
  10. 后缀是lnk是什么文件_ink是什么文件
  11. MES的关键数据模型S95标准介绍
  12. Zabbix 监控之项目类型-Trapper
  13. postgresql 命令行操作
  14. Autofac的高级使用——Autofac.2.6.3.862
  15. python 屏幕找图 点击,使用Python脚本在windows屏幕找图
  16. pythonturtle简单绘图_10分钟轻松学会 Python turtle 绘图
  17. vs2008编译QT开源项目--太阳神三国杀源码分析(四) 动画
  18. 全程干货,用 python 下载某站全部【免抠图片】,图片背景透明,格式PNG
  19. python用pip安装numpy完整命令_Python--Numpy安装
  20. ArcGisPro脚本工具【8】——用地图斑导出用地用海汇总表

热门文章

  1. MySQL RANGE分区
  2. 均值、中值、标准差、四分位差(C++)
  3. windows平台下使用cmake构建静态lib库以及使用静态lib库gtest项目
  4. ubantu20切换源
  5. BufferedReader读文件
  6. python 列表推导式详解
  7. 写一个函数insert,用来向一个动态链表插入节点。
  8. 服务器网络适配器多路传送器协议,win8系统开启Microsoft网络适配器多路传送协议的具体方法...
  9. Synergy报错 grabbed clipboard 和 disconnected 连接不上客户端
  10. 将一组数组尽可能均匀的分成两堆,使两个堆中的数的和尽可能相等