Bagikan melalui


weekday kelas

Mewakili hari dalam seminggu dalam kalender Gregorian. Misalnya, Selasa.

Sintaks

class weekday; // C++20

Keterangan

weekday Dapat menyimpan nilai [0, 255], tetapi biasanya menyimpan nilai [0, 6] untuk mewakili hari dalam seminggu. Lihat Konstanta hari kerja, di bawah ini, untuk konstanta yang dapat Anda gunakan dengan weekday kelas .

Anggota

Nama Deskripsi
Konstruktor weekdayBuat .
c_encoding Dapatkan nilainya weekday .
iso_encoding Dapatkan nilai ISO 8601 weekday .
ok Periksa apakah weekday nilainya valid.
operator++ Menaikkan weekday.
operator+= Tambahkan jumlah hari kerja yang ditentukan ke ini weekday.
operator-- Dekremen weekday.
operator-= Kurangi jumlah hari kerja yang ditentukan dari ini weekday.
operator[] Buat weekday_indexed atau weekday_last dari ini weekday.

Non-anggota

Nama Deskripsi
from_stream Uraikan weekday dari aliran yang diberikan menggunakan format yang ditentukan.
operator+ Tambahkan jumlah hari kerja yang ditentukan ke ini weekday.
operator- Kurangi jumlah hari kerja yang ditentukan dari ini weekday, atau temukan perbedaan antara dua weekday objek.
operator== Tentukan apakah dua weekday objek sama.
operator<< Keluarkan weekday ke aliran.

Persyaratan

Header:<chrono> Sejak C++20

Ruang nama:std::chrono

Opsi Kompilator:/std:c++latest

Konstruktor

Membangun sebuah 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
Buat weekday menggunakan hari dalam seminggu dp.

wd
Buat weekday dengan nilai wd.

Keterangan

1) Konstruktor default tidak menginisialisasi nilai hari kerja.
2) Buat weekday dengan nilai yang ditentukan.
Jika wd adalah 7, weekday dibangun dengan nilai 0.
Jangan inisialisasi dengan nilai di atas 255 atau yang dihasilkan weekday akan memiliki nilai yang tidak ditentukan.
3) Menghitung hari dalam seminggu apa yang sesuai dengan std::chrono::sys_days nilai dp, dan membangun weekday penggunaan hari itu.
4) Menghitung hari dalam seminggu yang sesuai dengan std::chrono::local_days nilai dp, dan membangun weekday penggunaan hari itu. Ini berulah seolah-olah Anda membuat weekday menggunakan weekday(std::chrono::sys_days(dp.time_since_epoch())).

Contoh: Membuat weekday

// 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;

Nilai hasil

Nilai hari kerja.

iso_encoding

Nilai hari kerja, tetapi dengan Hari Minggu (0) ditafsirkan sebagai 7 per ISO 8601.

constexpr unsigned iso_encoding() const noexcept;

Nilai hasil

Nilai hari kerja.

ok

Periksa apakan nilai yang disimpan dalam weekday ini berada dalam rentang yang valid.

constexpr bool is_leap() const noexcept;

Nilai hasil

true jika nilai hari kerja berada dalam rentang [0, 6]. Sebaliknya, false.

operator++

Tambahkan 1 ke nilai hari kerja.

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

Nilai hasil

1) Referensi ke *this hari kerja setelah ditingkatkan (kenaikan postfix).
2) Salinan weekday, sebelum dinaikkan (kenaikan awalan).

Contoh: 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

Keterangan

Nilai bertahas adalah modulo 7. Ini akan selalu berada di kisaran [0, 6].

operator--

Kurangi 1 dari weekday nilai .

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

Nilai hasil

1) Referensi ke *thisweekdaysetelah direkam (penurunan pascafiks).
2) Salinan weekdaysebelum dinyatakan (keputusan awalan).

Contoh: 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

Keterangan

Jika hasil yang dinyatakan kurang dari 0, hasilnya diatur ke 6.

operator+=

Tambahkan hari ke weekday.

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

Parameter

*d*
Jumlah hari yang akan ditambahkan.

Nilai hasil

Nilai dari *this + d. Hasilnya adalah modulo 7, dalam rentang [0, 6].

operator-=

Kurangi hari dari weekday.

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

Parameter

*d*
Jumlah hari yang akan dikurangi.

Nilai hasil

Nilai dari *this - d. Hasilnya adalah modulo 7, dalam rentang [0, 6].

operator[]

Buat weekday_indexed atau weekday_last dari ini weekday.

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

Nilai hasil

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

Contoh: 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

Konstanta hari kerja

(C++20) Header <chrono> menentukan konstanta berikut yang dapat Anda gunakan untuk weekday kenyamanan, keamanan jenis, dan ketahanan kode Anda yang lebih besar. Konstanta ini berada dalam cakupan ketika std::chrono berada dalam cakupan.

// 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};

Baca juga

weekday_last class
weekday_indexed class
<chrono>
Referensi File Header