IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> Boost日期时间(date_time)—日期 -> 正文阅读

[C++知识库]Boost日期时间(date_time)—日期

目录

一、基本介绍

二、日期对象的创建

三、日期与字符串之间的转换?

四、日期运算

五、日期区间运用

六、日历方面应用?


一、基本介绍

  • date_time库包含两部分:处理日期的gregorian、处理时间的posix_time
  • 处理日期:#include <boost/date_time/gregorian/gregorian.hpp>
  • 处理时间:#include <boost/date_time/posix_time/posix_time.hpp>

二、日期对象的创建

#include <stdio.h>
#include <string>
#include <boost/date_time/gregorian/gregorian.hpp>

int main(int argc, char **argv) {
	// date对象初始化
	boost::gregorian::date d1;									// 无效的日期
	boost::gregorian::date d2(2021, 11, 23);					// 数字构造的日期
	boost::gregorian::date d3(2021, boost::gregorian::Nov, 23);	// 英文指定月份,并不是输入字符串
	boost::gregorian::date d4(d2);
	
	// 当天日期
	d1 = boost::gregorian::day_clock().local_day();

	return 0;
}

三、日期与字符串之间的转换?

#include <stdio.h>
#include <string>
#include <boost/date_time/gregorian/gregorian.hpp>

int main(int argc, char **argv) {
	// date对象初始化
	boost::gregorian::date d1;									// 无效的日期
	// 字符串 转 date
	d1 = boost::gregorian::from_string("2021-11-23");
	d1 = boost::gregorian::from_string("2021/11/23");
	d1 = boost::gregorian::from_undelimited_string("20211102");

	// date 转 字符串
	tm t = boost::gregorian::to_tm(d1);
	printf("to_tm: %4d-%02d-%02d\n", t.tm_year + 1900, t.tm_mon + 1, t.tm_mday);
	
	// d1.year()返回的值类型应该是无符号数值类型,比如unsigned long等,所以这里强制转换为int输出
	printf("date_func: %4d-%02d-%02d\n", (int)d1.year(), (int)d1.month(), (int)d1.day());
	printf("Day Of Week: %d\n", (int)d1.day_of_week());
	printf("Day Of Year: %d\n", (int)d1.day_of_year());
	
	// 使用内置方法转换字符串
	printf("to_simple_string: %s\n", boost::gregorian::to_simple_string(d1).c_str());
	printf("to_iso_string: %s\n", boost::gregorian::to_iso_string(d1).c_str());
	printf("to_iso_extended_string: %s\n", boost::gregorian::to_iso_extended_string(d1).c_str());

	return 0;
}

运行结果:

四、日期运算

#include <stdio.h>
#include <string>
#include <boost/date_time/gregorian/gregorian.hpp>

int main(int argc, char **argv) {
	boost::gregorian::date d1(2021, 1, 1), d2(2021, 11, 23);

	printf("当前日期: %s\n", boost::gregorian::to_iso_extended_string(d2).c_str());
	printf("与[%s]相隔天数: %ld\n", boost::gregorian::to_iso_extended_string(d1).c_str(), (d2 - d1).days());
	
	boost::gregorian::date dt = d2 + boost::gregorian::days(10);
	printf("10天后日期是: %s\n", boost::gregorian::to_iso_extended_string(dt).c_str());

	dt = d2 + boost::gregorian::months(2);
	printf("2个月后的日期是: %s\n", boost::gregorian::to_iso_extended_string(dt).c_str());

	dt = d2 + boost::gregorian::weeks(2);
	printf("2周后的日期是: %s\n", boost::gregorian::to_iso_extended_string(dt).c_str());

	dt = d2 + boost::gregorian::years(2);
	printf("2年后的日期是: %s\n", boost::gregorian::to_iso_extended_string(dt).c_str());

	return 0;
}

运行结果:

?

五、日期区间运用

#include <stdio.h>
#include <string>
#include <boost/date_time/gregorian/gregorian.hpp>

int main(int argc, char **argv) {
	boost::gregorian::date_period dp1(boost::gregorian::date(2021, 11, 01), boost::gregorian::days(7));
	boost::gregorian::date_period dp2(boost::gregorian::date(2021, 11, 01), boost::gregorian::date(2021, 11, 7));

	printf("遍历dp1>>>\n");
	boost::gregorian::date dt = dp1.begin();
	while (dt < dp1.end()) {
		printf("%s\n", boost::gregorian::to_iso_extended_string(dt).c_str());
		dt += boost::gregorian::days(1);
	}

	printf("\n遍历dp2>>>\n");
	dt = dp2.begin();
	while (dt < dp2.end()) {
		printf("%s\n", boost::gregorian::to_iso_extended_string(dt).c_str());
		dt += boost::gregorian::days(1);
	}

	printf("\n通过日期迭代器来遍历日期>>>\n");
	dt = boost::gregorian::date(2021, 11, 1);
	boost::gregorian::day_iterator d_iter(dt, 2);	// 可以设置递增天数
	while (d_iter < boost::gregorian::date(2021, 11, 16)) {
		printf("%s\n", boost::gregorian::to_iso_extended_string(*d_iter).c_str());
		++d_iter;
	}
	// 另外可以按周(week_iterator)、月(month_iterator)、年(year_iterator)进行迭代
	return 0;
}

运行结果:

六、日历方面应用?

计算指定年份是否是闰年,指定年月的最后一天是几号等等

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-24 07:46:15  更:2021-11-24 07:47:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:01:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码