c++:从yyyyMMdd中获取周数
c++ : get week number from yyyyMMdd
我正在用c++编写一个impala udf,当以yyyyMMdd提供日期时,它会在一年中的某一周出现。但似乎找不到用c++将yyyyMMdd转换为一年中的一周的方法。在java中,我可以给你日历,但如何在c++中实现它。
TIA
您可以从<ctime>
使用std::mktime
。示例:
std::tm date={};
date.tm_year=2014-1900;
date.tm_mon=9-1;
date.tm_mday=28;
std::mktime(&date);
通话后,date.tm_wday会进行调整(0=周日)。date.tm_yday也进行了调整。
要获取一年中的一周,请使用:(date.tm_yday-date.tm_wday+7)/7
此计算在第一个完整的星期(即一年中第一个有星期日的星期,包括从星期日开始的年份中的1月1日)返回1;对于第一个部分周的天数为0。
我在这里回答了这个问题,但为了完整性,我也会在这里重复:
从howardhinnant.github.io/iso_week.html:使用iso_week.h
#include <iostream>
#include "iso_week.h"
int main() {
using namespace iso_week;
using namespace std::chrono;
// Get the current time and floor to convert to the sys_days:
auto today = floor<days>(system_clock::now());
// Convert from sys_days to iso_week::year_weeknum_weekday format
auto yww = year_weeknum_weekday{today};
// Print current week number of the year
std::cout << "The current week of " << yww.year() << " is: "
<< yww.weeknum() << std::endl;
// Set any day
auto any_day = 2014_y/9/28;
// Get week of `any_day`
std::cout << "The week of " << any_day.year() << " on `any day` was: "
<< any_day.weeknum() << std::endl;
}
它给出了输出:
The current week of 2019 is: W18
The week in 2014 on `any day` was: W09
使用boost::date库。它简单易用。
相关文章:
- 获取 2D 数组 c++ 中的所有数字对
- 使用 GDAL 获取矢量数组中的所有行数和列数
- 如何将不可移动和不可复制的函数返回值获取到数组中
- 如何在没有硬编码的情况下以C++为单位获取类数组的长度?
- 特征获取索引数组,其中向量中的值为真(不需要循环)
- 如何获取指针数组中的元素数量?
- 如何在序列化后获取字节数组
- 如何从 boost::p osix_time::p time 获取秒数
- C++使用第二个函数获取字符数组的长度
- Qt TreeView获取总行数,考虑展开和折叠的文件夹
- 如何使用低级系统调用从 stdin 和输入文件中获取字节数
- 从 CImage AtlImage 获取缓冲区数组
- 如何直接从 FILETIME 结构获取/设置和获取秒数
- 在某些范围更新后获取整数数组的最终状态的有效算法是什么?
- 获取字符数组地址,然后转换为指针字符
- 如何在C 中获取整数数组的元素
- 如何打破循环以在C 中获取整数数组
- 在 qt c++ 中获取 Json 数组中 Qstring 的输出
- c++:从yyyyMMdd中获取周数
- C++从周数和周日中获取ISO8601日数