如何在C++中使用date.h获取周一和周五的日期
使用Howard Hinnant的 date.h(我使用的是C++17),如何用这个库得到周一和周五的日期?
我可以用下面这个得到今天的日期:
auto todayDate = date::floor<date::days>(std::chrono::system_clock::now());
std::cout << date::format("%F", todayDate) << "\n";
但我想得到工作周(周一到周五)的日期
解决方案
要获取周一和周五的日期,可以通过改编这里的逻辑来实现,基于 Howard Hinnant的回答在此处 的思路:
auto todayDate = date::floor<date::days>(std::chrono::system_clock::now());
std::cout << date::format("%F", todayDate) << "\n";
auto mondayDate = todayDate - (date::weekday{ todayDate } - date::Monday);
std::cout << date::format("%F", mondayDate) << "\n";
auto fridayDate = mondayDate + (mondayDate - date::Thursday);
std::cout << date::format("%F", fridayDate) << "\n";
如果你需要Unix时间戳版本:
auto mondayTimestamp = mondayDate.time_since_epoch();
auto mondayDateSeconds = std::chrono::duration_cast<std::chrono::seconds>(mondayTimestamp).count();
auto fridayTimestamp = fridayDate.time_since_epoch();
auto fridaySeconds = std::chrono::duration_cast<std::chrono::seconds>(fridayTimestamp).count();
这对于新的C++20 <chrono> 库也应该适用,因为本质上它是基于Howard的库实现的。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。