C++ Chrono 确定一天是否是周末?
C++ Chrono determine whether day is a weekend?
我有一个日期,格式为年份(int(,月份(int(和日期(int(,例如,2018,10,12表示2018年10月12日。
有没有办法C++这些整数一起使用 Chrono 库来确定我的"日期"是否是周末?
如果没有,实现这一目标的最简单替代方法是什么?
在 C++20 中,您将能够执行以下操作:
#include <chrono>
constexpr
bool
is_weekend(std::chrono::sys_days t)
{
using namespace std::chrono;
const weekday wd{t};
return wd == Saturday || wd == Sunday;
}
int
main()
{
using namespace std::chrono;
static_assert(!is_weekend(year{2018}/10/12), "");
static_assert( is_weekend(year{2018}/10/13), "");
}
当然,如果输入不是constexpr
,那么计算也不能。
据我所知,还没有人发布这个,但是您可以使用 Howard Hinnant 的日期时间库使用此语法抢占先机。 您只需要#include "date/date.h"
并将几个using namespace std::chrono;
更改为using namespace date;
.
#include "date/date.h"
constexpr
bool
is_weekend(date::sys_days t)
{
using namespace date;
const weekday wd{t};
return wd == Saturday || wd == Sunday;
}
int
main()
{
using namespace date;
static_assert(!is_weekend(year{2018}/10/12), "");
static_assert( is_weekend(year{2018}/10/13), "");
}
这将适用于 C++17、C++14,如果您删除constexpr
,则 C++11。 它不会移植到 C++11 之前,因为它确实取决于<chrono>
.
对于奖励积分,上述函数也适用于当前时间 (UTC(:
assert(!is_weekend(floor<days>(std::chrono::system_clock::now())));
相关文章:
- C++LDAP检查用户是否是特定组的成员
- 检查某些类型是否是模板类 std::optional 的实例化
- 将错误返回给调用方而不是立即在 C++ 中抛出错误是否是一种好的做法
- 如何检查模板专用化是否是基本模板的子类?
- 如何检查变量是否是C++中的地图?
- C++ Chrono 确定一天是否是周末?
- 将相同共享指针的副本存储在不同的向量中是否是一种好的做法?
- 使用类在C++中存储和列出变量/方法是否是一种好的做法
- 代码在 CodeSignal 中工作不正确。不确定这是否是我的代码缺陷
- 如果 C 函数仍然可以间接执行(通过回调函数),那么将它声明为静态函数是否是一种不好的做法?
- MFC 中的窗口消息管理:添加基类调用是否是强制性的?
- 检查 n2 是否是 n1 的倍数后结果错误,但根本没有错误
- C ++:检查它是否是类中的数字
- 传递给放置 new 的指针是否是指向其对象表示形式的非 UB 指针?
- 使用 SET(C++) 检查两个给定字符串是否是字谜时出现运行时错误
- 从 std::string 到 std::array<char,size> 的 memcopy 额外数据是否是一种未定义的行为?
- 有没有办法检查发送到变量的值是否是正确的类型,而它已经在该变量下?
- 如何检查一个模板是否是另一个模板的类成员
- 有没有办法检查用户输入是否是数字?
- 如何知道文本文件中的输入是否是 C++ 中的有效数字