Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu özel durum, bir local_time öğesini var sys_timeolmayan 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_timeoluş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_timeiş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