2015-12-01 36 views
1

所以我沒有在這裏或其他任何地方看到過使用<ctime>或其他庫獲得月份小時和分鐘的方法。MM:hh:mm time with C++

我現在能做些什麼,只是得到完整的當前日期:

time_t now = time(0); 
cout<<ctime(&now); 

有什麼建議?

+0

你是什麼意思*月份小時和分鐘*?你想顯示當前月份的時間:當前小時:當前分鐘? – NathanOliver

+2

請參閱std :: time_get模板類。 –

+0

@NathanOliver「month:當前小時:當前分鐘」 - 是 –

回答

2

可以使用<ctime>標準庫這樣的:

#include <ctime> 
#include <iostream> 

int main() 
{ 
    // get current time 
    std::time_t timer = std::time(0); 

    // convert to 'broken time' 
    std::tm bt = *std::localtime(&timer); // not thread safe 

    // extract month number from 'broken time' struct 
    std::cout << "month: " << (bt.tm_mon + 1) << '\n'; 
    std::cout << "hours: " << (bt.tm_hour) << '\n'; 
    std::cout << "mins : " << (bt.tm_min) << '\n'; 
} 

功能std::localtime回報一個指針內部statc結構類型std::tm

因爲它的指針使用*返回指針到內部結構最好是由提領將其複製到本地版本:

// copy what the returned pointer points to into `bt`. 
std::tm bt = *std::localtime(&timer); 
+0

是啊,所以這個作品:D。你現在可以解釋一下這個部分了嗎?tm bt = * std :: localtime(&timer);'或者只是給我的鏈接信息 –

+0

@MisterWhite我添加了一些解釋,包含相關函數和結構的鏈接。 – Galik

+0

例如。所以通過執行'* localtime(&timer)'我們把內存'Wed Dec 28 06:47:03 2011',然後'tm struct'按照我們想要的方式解密它? –

-1

嘗試

std::put_time("%a %b %d %H:%M:%S %Y", &now); 
+0

我使用c + +,而不是c。什麼是put_time? –

+1

['std :: put_time'](http://en.cppreference.com/w/cpp/io/manip/put_time)是C++ –

+0

錯誤:put_time未聲明 –

0

如果boost你試試這個是好的:

boost::posix_time::to_simple_string(boost::posix_time::microsec_clock::local_time()).c_str() 
+0

好吧,這是充滿了一切 –

1

由於您使用的ctime(C時) ,所有的C事情應該工作。你可以使用strftime

char timestr[32]; 
strftime(timestr, sizeof(timestr), "%m:%H:%M", localtime(&now)); 
相關問題