Eski bir soru için yeni cevap:
Soru, hangi saat diliminde belirtilmez. İki makul olasılık vardır:
- UTC'de.
- Bilgisayarın yerel saat diliminde.
1 için, bu tarih kütüphanesini ve aşağıdaki programı kullanabilirsiniz:
#include "date.h"
#include <iostream>
int
main()
{
using namespace date;
using namespace std::chrono;
std::cout << system_clock::now() << '\n';
}
Hangi benim için çıktı:
2015-08-18 22:08:18.944211
Tarih kütüphanesi sadece için bir akış operatörü ekler std::chrono::system_clock::time_point
. Ayrıca başka birçok güzel işlevsellik ekler, ancak bu basit programda kullanılmaz.
2'yi (yerel saat) tercih ederseniz , tarih kütüphanesinin üzerine inşa edilmiş bir saat dilimi kütüphanesi vardır . Bu kütüphanelerin her ikisi de derleyicinin C ++ 11 veya C ++ 14'ü desteklediği varsayılarak açık kaynak ve çapraz platformdur .
#include "tz.h"
#include <iostream>
int
main()
{
using namespace date;
using namespace std::chrono;
auto local = make_zoned(current_zone(), system_clock::now());
std::cout << local << '\n';
}
Hangi benim için sadece çıktı:
2015-08-18 18:08:18.944211 EDT
Elde edilen sonuç türü make_zoned
a, date::zoned_time
a bir eşleştirme olan date::time_zone
ve std::chrono::system_clock::time_point
. Bu çift yerel bir zamanı temsil eder, ancak nasıl sorguladığınıza bağlı olarak UTC'yi de temsil edebilir.
Yukarıdaki çıktı ile, bilgisayarımın şu anda UTC -4h ve EDT kısaltması ile bir saat diliminde olduğunu görebilirsiniz.
Başka bir saat dilimi isteniyorsa, bu da gerçekleştirilebilir. Örneğin, Sydney, Avustralya'da geçerli saati bulmak için değişkenin yapısını şu şekilde değiştirin local
:
auto local = make_zoned("Australia/Sydney", system_clock::now());
Ve çıktı şu şekilde değişir:
2015-08-19 08:08:18.944211 AEST
C ++ 20 Güncelleştirmesi
Bu kütüphane artık büyük ölçüde C ++ 20 için benimsenmiştir. Ad alanı date
kayboldu ve std::chrono
şimdi her şey ad alanında . Ve kullanmak zoned_time
yerine make_time
. Başlıklarını Bırak "date.h"
ve "tz.h"
sadece kullanmak <chrono>
.
Bunu yazarken, bazı platformlarda kısmi uygulamalar ortaya çıkmaya başlıyor.