Freigeben über


weekday-Klasse

Stellt einen Wochentag im gregorianischen Kalender dar. Beispiel: Dienstag.

Syntax

class weekday; // C++20

Hinweise

Ein weekday Wert kann einen Wert von [0, 255] enthalten, enthält jedoch in der Regel einen Wert [0, 6], um einen Tag der Woche darzustellen. Siehe Weekday-Konstanten unten für Konstanten, die Sie mit der weekday Klasse verwenden können.

Mitglieder

Name Beschreibung
Konstruktoren Erstellen Sie ein weekday.
c_encoding Rufen Sie den weekday Wert ab.
iso_encoding Rufen Sie den ISO 8601-Wert weekday ab.
ok Überprüfen Sie, ob der weekday Wert gültig ist.
operator++ Erhöhen Sie die weekday.
operator+= Add the specified number of weekdays to this weekday.
operator-- Decrement the weekday.
operator-= Subtrahieren Sie die angegebene Anzahl von Wochentagen von diesem weekday.
operator[] Erstellen Sie eine weekday_indexed oder weekday_last aus diesem weekday.

Nicht-Member

Name Beschreibung
from_stream Analysieren Eines weekday aus dem angegebenen Datenstrom mithilfe des angegebenen Formats.
operator+ Add specified number of weekdays to this weekday.
operator- Subtrahieren Sie die angegebene Anzahl von Wochentagen davon weekday, oder suchen Sie den Unterschied zwischen zwei weekday Objekten.
operator== Bestimmen Sie, ob zwei weekday Objekte gleich sind.
operator<< Ausgabe eines weekday Datenstroms.

Anforderungen

Header: <chrono> seit C++20

Namespace:std::chrono

Compileroption: /std:c++latest

Konstruktoren

Erstellt ein Objekt vom Typ weekday.

1) weekday() = default; // C++20
2) explicit constexpr weekday(unsigned wd) noexcept; // C++20
3) constexpr weekday(const sys_days& dp) noexcept; // C++20
4) explicit constexpr weekday(const local_days& dp) noexcept; // C++20

Parameter

dp
Erstellen Sie einen weekday using the day of the week dp.

wd
Erstellen eines weekday mit Wert wd.

Hinweise

1) Der Standardkonstruktor initialisiert nicht den Wochentagwert.
2) Erstellen sie mit weekday dem angegebenen Wert.
Ist wd 7, wird der weekday Wert mit dem Wert 0 erstellt.
Initialisieren Sie nicht mit Werten über 255, oder das Ergebnis weekday hat einen nicht angegebenen Wert.
3) Berechnet, welcher Wochentag dem std::chrono::sys_days Wert dpentspricht, und erstellt einen weekday betreffenden Tag.
4) Berechnet den Wochentag, der dem std::chrono::local_days Wert dpentspricht, und erstellt einen weekday betreffenden Tag. Es verhält sich so, als ob Sie die weekday Verwendung weekday(std::chrono::sys_days(dp.time_since_epoch()))erstellt haben.

Beispiel: Erstellen einer weekday-Klasse

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    weekday wd{ Wednesday };
    weekday wd2{ 3 };
    std::cout << wd << '\n' << wd2;
    
    return 0;
}
Wednesday
Wednesday

c_encoding

constexpr unsigned c_encoding() const noexcept;

Rückgabewert

Dies ist der Wert für den Wochentag.

iso_encoding

Der Wochentagswert, aber mit Sonntag (0) wird als 7 pro ISO 8601 interpretiert.

constexpr unsigned iso_encoding() const noexcept;

Rückgabewert

Dies ist der Wert für den Wochentag.

ok

Hiermit wird überprüft, ob der Wert, der in dieser weekday-Klasse gespeichert ist, im gültigen Bereich liegt.

constexpr bool is_leap() const noexcept;

Rückgabewert

true wenn sich der Wochentagswert im Bereich [0, 6] befindet. Andernfalls false.

operator++

Addieren Sie 1 zum Wochentagswert.

1) constexpr std::chrono::weekday& operator++() noexcept;
2) constexpr std::chrono::weekday operator++(int) noexcept;

Rückgabewert

1) Ein Verweis auf *this Wochentag , nachdem er erhöht wurde (ein Postfix-Inkrement).
2) Eine Kopie der weekday, bevor sie erhöht wurde (ein Präfix inkrementiert).

Beispiel: operator++

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std;
using namespace std::chrono;

int main()
{
    std::chrono::weekday wd{Thursday};

    std::cout << wd << " " << ++wd << "\n"; // constexpr weekday& operator++() noexcept
    std::cout << wd << " " << wd++ << "\n"; // constexpr weekday operator++(int) noexcept
    std::cout << wd << "\n";

    return 0;
}
Thu Fri
Fri Fri
Sat

Hinweise

Der inkrementierte Wert ist Modulo 7. Er befindet sich immer im Bereich [0, 6].

operator--

Subtrahieren Sie 1 vom weekday Wert.

1) constexpr std::chrono::weekday& operator--() noexcept;
2) constexpr std::chrono::weekday operator--(int) noexcept;

Rückgabewert

1) Ein Verweis darauf *this weekday , nachdem er dekrementiert wurde (eine Postfix-Dekrementierung).
2) Eine Kopie der weekday vor ihr dekrementierten (Präfix-Dekrementierung).

Beispiel: operator--

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std;
using namespace std::chrono;

int main()
{
    weekday y = weekday{Thursday};

    cout << y << " " << --y << "\n"; // constexpr weekday& operator--() noexcept
    cout << y << " " << y-- << "\n"; // constexpr weekday operator--(int) noexcept
    cout << y << "\n";

    return 0;
}
Thu Wed
Wed Wed
Tue

Hinweise

Wenn das dekrementierte Ergebnis kleiner als 0 ist, wird es auf 6 festgelegt.

operator+=

Hinzufügen von Tagen zu einem weekday.

constexpr weekday& operator+=(const days& d) noexcept;

Parameter

*d*
Die Anzahl zu addierender Tage.

Rückgabewert

Der Wert von *this + d. Das Ergebnis ist Modulo 7, im Bereich [0, 6].

operator-=

Subtrahieren von Tagen von der weekday.

constexpr weekday& operator-=(const days& d) noexcept;

Parameter

*d*
Die Anzahl der Tage, die subtrahiert werden sollen.

Rückgabewert

Der Wert von *this - d. Das Ergebnis ist Modulo 7, im Bereich [0, 6].

operator[]

Erstellen Sie eine weekday_indexed oder weekday_last aus diesem weekday.

1) std::chrono::weekday_indexed(*this, index) // C++20
2) std::chrono::weekday_last(*this) // C++20

Rückgabewert

1) std::chrono::weekday_indexed(*this, index)
2) std::chrono::weekday_last(*this)

Beispiel: operator[]

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std;
using namespace std::chrono;

int main()
{
    constexpr auto firstMondayInJanuary =
        year_month_day{ Monday[2] / January / 2021y };

    std::cout << firstMondayInJanuary << "\n";

    constexpr auto lastMondayInJanuary = 
        year_month_day{ Tuesday[last] / January / 2021y };
    std::cout << lastMondayInJanuary << "\n";
}
2021-01-11
2021-01-26

Wochentagkonstanten

(C++20) Die <chrono> Kopfzeile definiert die folgenden Konstanten, mit denen Sie ihren Code einfacher, typsicherheit und wartungsfreundlicher verwenden weekday können. Diese Konstanten befinden sich im Bereich, wenn std::chrono sie sich im Bereich befinden.

// Calendrical constants
inline constexpr std::chrono::weekday Sunday{0};
inline constexpr std::chrono::weekday Monday{1};
inline constexpr std::chrono::weekday Tuesday{2};
inline constexpr std::chrono::weekday Wednesday{3};
inline constexpr std::chrono::weekday Thursday{4};
inline constexpr std::chrono::weekday Friday{5};
inline constexpr std::chrono::weekday Saturday{6};

Siehe auch

weekday_last-Klasse
weekday_indexed-Klasse
<chrono>
Headerdateienreferenz