Aracılığıyla paylaş


nonexistent_local_time sınıfı

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