nonexistent_local_time
sınıfı
Bu özel durum, bir local_time
öğesini var sys_time
olmayan bir öğesine dönüştürmeye çalışırken oluşur.
Sözdizimi
class nonexistent_local_time : public runtime_error; // C++20
Açıklamalar
Standart saatten ilkbaharda gün ışığından yararlanma saatine geçiş sırasında, saatler temelde bir saat kaybeder. Bu kafa karıştırıcı olabilir çünkü yaz saati geçişi bir saat eklemek anlamına gelmiyor mu? Bir saat "ileri doğru" yayılarak, geçişi izleyen saat etkili bir şekilde kaldırılır. Mart ayının ikinci Pazar günü saat 02:00'de gerçekleşen New York'ta yaz saati değişikliğini göz önünde bulundurun. Saat 02:00'de gün ışığından yararlanma saatine geçmektedir ve şimdi 03:00'da okunuyor. local_time
Dönüştürülen saat 02:30 ise, örneğin, bu süre "kaldırılan" süre boyuncadır ve "yok" olur.
Aşağıdaki örnekte, var olmayan bir zaman dönüştürme hatası gösterilmektedir. Bu örnekte, New York'ta yaz saati saat 02:00'de başlar. Dönüştürülen süre 02:30'dır. Bu, standart saatten yaz saati uygulamasına geçiş nedeniyle kaldırılan saattir. Bu nedenle, bir nonexistent_local_time
özel durum oluşturulur.
Örnek: nonexistent_local_time
#include <chrono>
#include <iostream>
using namespace std::chrono;
int main()
{
try
{
// The following will throw an exception because the local time being converted is during
// the hour that is "removed" when the clock advances an hour for daylight saving time.
auto zt = zoned_time{"America/New_York", local_days{Sunday[2]/March/2016} + 2h + 30min};
} catch (const nonexistent_local_time& e)
{
std::cout << e.what() << '\n';
}
return 0;
}
2016-03-13 02:30:00 is in a gap between
2016-03-13 02:00:00 EST and
2016-03-13 03:00:00 EDT which are both equivalent to
2016-03-13 07:00:00 UTC
Üyeler
Veri Akışı Adı | Açıklama |
---|---|
Oluşturucular | oluşturma nonexistent_local_time . |
what |
Var olmayan zamanı açıklayan bir dize alır. |
Gereksinimler
Üst bilgi: <chrono>
(C++20'den beri)
Ad alanı: std::chrono
Derleyici Seçeneği: /std:c++latest
Oluşturucu
bir nonexistent_local_time
oluşturur.
template<class Duration>
nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
Parametreler
tp
Dönüştürme işleminin başarısız olduğu local_time.
i
Dönüştürme girişimi hakkında bilgi. Ayrıntılar için bkz local_info
.
Açıklamalar
Normalde bu özel durumu oluşturmazsınız. bir öğesine dönüştüren local_time
sys_time
işlevler tarafından oluşturulur.
what
Saatin neden mevcut olmadığını açıklayan bir dize alır.
[[nodiscard]] virtual const char* what() const noexcept;
Dönüş değeri
Saatin neden mevcut olmadığını açıklayan bir dize. Örneğin:
2016-03-13 02:30:00 is in a gap between
2016-03-13 02:00:00 EST and
2016-03-13 03:00:00 EDT which are both equivalent to
2016-03-13 07:00:00 UTC
Ayrıca bkz.
<chrono>
to_sys
ambiguous_local_time
Üst Bilgi Dosyaları Başvurusu
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