2015-12-30 21 views
5

Sadece chrono::time_point alır std :: chrono kullanarak bir örnek bulmaya çalışıyorum ve tam sayı olarak dakika sayısını ve dakika sayısını ayıklar.Geçerli saat ve dakika sayısını kullanarak chrono :: time_point kullanarak

Ben:

std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); 

ama sonra saatleri ve dakikaları (gece yarısından itibaren) ayıklamak nasıl bulamıyor? Ben böyle bir şey arıyorum:

int hours = now.clock.hours(); 

cevap

6

İşte sizin için bunu yapacak bir open-source date library ücretsiz. Tam olarak nasıl yapıldığını bilmek istiyorsanız kodu incelemek için çekinmeyin. Böyle UTC saat diliminde gece yarısından itibaren geçerli saat ve dakika almak için kullanabilirsiniz: Eğer diğer bazı saat diliminde bilgi istiyorsanız

#include "date/date.h" 
#include <iomanip> 
#include <iostream> 

int 
main() 
{ 
    auto now = date::floor<std::chrono::minutes>(std::chrono::system_clock::now()); 
    auto dp = date::floor<date::days>(now); 
    auto time = date::make_time(now - dp); 
    int hours = time.hours().count(); 
    int minutes = time.minutes().count(); 
    std::cout.fill('0'); 
    std::cout << std::setw(2) << hours << ':' << std::setw(2) << minutes << '\n'; 
} 

, bu ek IANA time zone parser gerekecektir (veya kendi yazabilirsiniz zaman dilimi yönetim sistemi).

#include "date/tz.h" 
#include <iomanip> 
#include <iostream> 

int 
main() 
{ 
    auto zt = date::make_zoned(date::current_zone(), 
           std::chrono::system_clock::now()); 
    auto now = date::floor<std::chrono::minutes>(zt.get_local_time()); 
    auto dp = date::floor<date::days>(now); 
    auto time = date::make_time(now - dp); 
    int hours = time.hours().count(); 
    int minutes = time.minutes().count(); 
    std::cout.fill('0'); 
    std::cout << std::setw(2) << hours << ':' << std::setw(2) << minutes << '\n'; 
} 

Bu kütüphaneler burada github mevcuttur: Yukarıdaki kod yerel saat diliminde gece yarısından itibaren saatleri ve dakikaları almak çok gibi modifiye olacağını İşte

https://github.com/HowardHinnant/date

bir video sunumum tarih kütüphanesinin: burada

https://www.youtube.com/watch?v=tzyGjOm8AKo

Ve bir video presentati olduğunu Saat dilimi kütüphanesinin tarih: gerçekten olsa bana-sayesinde rahatsız ediyor böyle

https://www.youtube.com/watch?v=Vwd3pduVGKY

İlgili konular