Aracılığıyla paylaş


time_zone sınıfı

A time_zone , belirli bir coğrafi alanın saat dilimini temsil eder. Her alan için saat dilimi kurallarının tam geçmişine sahiptir, bu nedenle saat dönüştürmeleri, saat dilimi için kuralların bugünkinden farklı olduğu bir tarih saatini geri dönüştürürseniz doğru olur.

Sözdizimi

class time_zone;  // Since C++20

Açıklamalar

Kitaplık, <chrono> saat dilimi veritabanı başlatma işleminin bir parçası olarak nesneleri oluşturur time_zone . Oluşturulan nesnelere erişim sağlar const .

Bir time_zone nesneyi oluşturamaz veya kopyalayamazsınız ve varsayılan taşıma oluşturucuyu veya varsayılan taşıma atama işlecini kullanmak tanımsız davranışla sonuçlanır.

Örneği şu şekilde alırsınız time_zone :

const auto& timeZoneDatabase = get_tzdb(); // initialize the time zone database
const auto& currentZone = timeZoneDatabase.current_zone();

Microsoft C++, Visual Studio 2019 sürüm 16.10'dan başlayarak sınıfı destekler time_zone . time_zone sınıfı bir C++20 özelliğidir. Derleyici /std:c++latest seçeneği gereklidir.

Üyeler

Genel üye işlevleri ve işlev şablonları

Veri Akışı Adı Açıklama
get_info Bunun time_zoneiçin bir sys_info veya local_info alır.
name Bu time_zoneöğesinin adını alır.
to_local bu time_zoneiçinde a'ya local_time sys_time dönüştürür.
to_sys bu time_zoneiçinde a'ya sys_time local_time dönüştürür.

Gereksinimler

Üstbilgi: <chrono>

Saat dilimi verileri yalnızca Windows 10 sürüm 1903/19H1 ve üzeri ile Windows Server 2022 ve sonraki sürümlerde kullanılabilir.

Ad alanı: std::chrono

get_info

İşlev şablonunun get_info bu time_zoneiçin veya sys_info local_info alan iki aşırı yüklemesi vardır.

template<class Duration>
sys_info get_info(const sys_time<Duration>& st) const;  // Since C++20
    
template<class Duration>
local_info get_info(const local_time<Duration>& lt) const;  // Since C++20

Parametreler

Duration
duration veya local_time parametresinin sys_time sınıfı.

st
Sonuç sys_time almak sys_info için kullanılan zaman noktası.

lt
Sonuç local_time almak local_info için kullanılan zaman noktası.

Dönüş değeri

get_info Bir zaman noktası stalan sys_time işlev şablonunda, aralığındaki st [i.begin, i.end)gibi bir sys_info nesne i döndürür.

get_info Bir zaman noktası ltalan local_time işlev şablonunda bir local_info nesnesi döndürür.

Açıklamalar

Microsoft C++ Visual Studio 2019 sürüm 16.10'da başlamayı destekler time_zone::get_info . işlevi, derleyici seçeneğini gerektiren /std:c++latest bir C++20 özelliğidir.

name

Bu time_zoneöğesinin adını alır.

string_view name() const noexcept;  // Since C++20

Dönüş değeri

Saat diliminin adını olarak string_viewdöndürür.

Açıklamalar

Microsoft C++ Visual Studio 2019 sürüm 16.10'da başlamayı destekler time_zone::name .

to_local

İşlev şablonuto_local, içinde time_zonea'yi sys_time öğesine local_time dönüştürür.

template<class Duration>
local_time<common_type_t<Duration, seconds>>
to_local(const sys_time<Duration>& st) const;  // Since C++20

Parametreler

Duration
duration veya local_time parametresinin sys_time sınıfı.

st
Sonuç sys_time almak sys_info için kullanılan zaman noktası.

Dönüş değeri

to_local, bu time_zoneiçinde ile st ilişkilendirilmiş öğesini local_time döndürür.

Açıklamalar

Microsoft C++ Visual Studio 2019 sürüm 16.10'da başlamayı destekler time_zone::to_local . işlevi, derleyici seçeneğini gerektiren /std:c++latest bir C++20 özelliğidir.

Örnek: dönüştürme sys_timelocal_time

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

using namespace std::chrono;

int main()
{
    const auto& timeZoneDatabase = get_tzdb();
    const auto& currentZone = timeZoneDatabase.current_zone();
    local_time<system_clock::duration> lt = currentZone->to_local(system_clock::now());

    std::cout << "local_time: " << lt << "\n";
   
    return 0;
}
local_time: 2021-09-08 15:15:53.1830646

to_sys

İşlev şablonunun to_sys bu time_zoneiçinde a'ya local_time sys_time dönüştüren iki aşırı yüklemesi vardır.

template<class Duration>
sys_time<common_type_t<Duration, seconds>>
to_sys(const local_time<Duration>& lt) const;  // Since C++20

template<class Duration>
sys_time<common_type_t<Duration, seconds>>
to_sys(const local_time<Duration>& lt, choose z) const;  // Since C++20

Parametreler

Duration
duration parametresinin local_time sınıfı.

lt
Dönüştürülecek local_time zaman noktası.

z
veya choose::latestdeğerichoose::earliest. Aksi takdirde belirsiz sonuçları çözümlemek için kullanılır.

Dönüş değeri

to_sysen az kadar iyi secondsolan bir sys_time döndürür. Bağımsız değişkenin lt daha hassas olması daha incedir. Döndürülen sys_time , bu time_zone kurallarına göre UTC eşdeğeridir lt .

tek parametreli aşırı yükleme, öğesinden sys_time lt öğesine dönüştürme belirsizse bir ambiguous_local_time özel durum oluşturur ve nonexistent_local_time yerel saat noktası mevcut olmayan bir yerel saat noktasını temsil ederse bir özel durum oluşturur. Belirsizlik, yaz saati ile standart saat geçişi sırasında gerçekleşebilir. Aynı yerel saat noktasının iki örneği bir gün içinde oluşabilir. Mevcut olmayan bir yerel saat noktası, standart saatten yaz saati saatine geçişte bir zaman noktasını temsil eder.

İki parametreli aşırı yükleme, bu gibi durumlarda bir özel durum oluşturmaz. 'den lt öğesine sys_time dönüştürme belirsizse, to_sys ise öncekini z sys_time choose::earliestdöndürür ve ise z choose::latestdaha sonrasını sys_time döndürür. iki lt UTC saat noktası arasında var olmayan bir saati temsil ederse, iki UTC saat noktası aynı olur, bu nedenle to_sys bu UTC saat noktasını döndürür.

Açıklamalar

Microsoft C++ Visual Studio 2019 sürüm 16.10'da başlamayı destekler time_zone::to_sys . işlevi, derleyici seçeneğini gerektiren /std:c++latest bir C++20 özelliğidir.

Örnek: dönüştürme local_timesys_time

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

using namespace std::chrono;

int main()
{
    const auto& timeZoneDatabase = get_tzdb();
    const auto& currentZone = timeZoneDatabase.current_zone();

    auto st = currentZone->to_sys(local_days{2021y/September/15d}+16h+45min, choose::earliest);

    std::cout << "sys_time: " << st << "\n";
   
    return 0;
}
sys_time: 2021-09-15 23:45:00.0000000

Ayrıca bkz.

<chrono>
Üst bilgi dosyaları başvurusu