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_zone için bir sys_info veya local_info alır. |
name |
Bu time_zone öğesinin adını alır. |
to_local |
bu time_zone içinde a'ya local_time sys_time dönüştürür. |
to_sys |
bu time_zone iç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_zone
iç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ı st
alan 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ı lt
alan 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_view
dö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_zone
a'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_zone
iç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_time
local_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_zone
iç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::latest
değerichoose::earliest
. Aksi takdirde belirsiz sonuçları çözümlemek için kullanılır.
Dönüş değeri
to_sys
en az kadar iyi seconds
olan 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::earliest
döndürür ve ise z
choose::latest
daha 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_time
sys_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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin