GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::chrono::year_month_day::ok(3) C++ Standard Libary std::chrono::year_month_day::ok(3)

std::chrono::year_month_day::ok - std::chrono::year_month_day::ok


constexpr bool ok() const noexcept; (since C++20)


Checks if this year_month_day object represents a valid calendar date.


true if this year_month_day object represents a valid calendar date, that is, the
stored year, month, and day values are all valid and the stored day value is within
the number of days in the given year and month. Otherwise false.


constexpr bool std::chrono::year_month_day::ok() const noexcept {
return year().ok() && month().ok() && day().ok() &&
day() <= (year()/month()/std::chrono::last).day();
}

// Run this code


#include <chrono>


int main()
{
constexpr auto ymd1 {std::chrono::day(1)/std::chrono::July/2020};
static_assert(ymd1.ok());


constexpr auto ymd2 {std::chrono::year(2020)/7/42};
static_assert(not ymd2.ok());


constexpr auto ymd3 {std::chrono::February/29/2020}; // ok, leap year
static_assert(ymd3.ok());


constexpr auto ymd4 = ymd3 + std::chrono::years{1}; // bad, not a leap year
static_assert(ymd4 == std::chrono::February/29/2021 and not ymd4.ok());


// to fix the bad date we may want to snap to the last day of the month:
if constexpr (!ymd4.ok()) {
constexpr auto ymd = ymd4.year()/ymd4.month()/std::chrono::last;
static_assert(ymd == std::chrono::February/28/2021 and ymd.ok());
}


// or we may want to overflow to the next month:
if constexpr (!ymd4.ok()) {
constexpr auto st = std::chrono::sys_time<std::chrono::days>{ymd4};
constexpr auto ymd = std::chrono::year_month_day{st};
static_assert(ymd == std::chrono::March/1/2021 and ymd.ok());
}
}

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.