2011-12-01 79 views
10

如何獲得當前日期d/m/y。我需要他們有3個不同的變量,例如day=d; month=m; year=y;如何獲取當前日期和時間?

+1

您必須指定一個平臺。 – unwind

+0

你有什麼嘗試? http://stackoverflow.com/questions/997946/c-get-current-time-and-date – daniloquio

+0

@Fredrik,問比研究更簡單。 –

回答

21

對於linux,您可以使用'localtime'函數。

#include <time.h> 

time_t theTime = time(NULL); 
struct tm *aTime = localtime(&theTime); 

int day = aTime->tm_mday; 
int month = aTime->tm_mon + 1; // Month is 0 - 11, add 1 to get a jan-dec 1-12 concept 
int year = aTime->tm_year + 1900; // Year is # years since 1900 
+0

您的意思是localtime(&time(NULL)); ? – maximus

+0

我改正了答案,因爲它不會按原樣編譯。你不能通過指針(即只是一個數字)的右值,所以你需要把它變成一個變量首先 – Petesh

2

ctime庫提供了這樣的功能。

另請檢查this。這是另一個帖子,可能會幫助你取決於你的平臺。

+1

'#include #include using namespace std; int main(){ time_t t = time(0); //取得現在時間 結構TM * =現在本地時間(& t); COUT << (now-> tm_year + 1900)<< ' - ' << (now-> tm_mon + 1)<< ' - ' << now-> tm_mday << ENDL; } '謝謝 – Wizard

10

這裏是chrono方式(C++ 0x中) - 看到它住在http://ideone.com/yFm9P

#include <chrono> 
#include <ctime> 
#include <iostream> 

using namespace std; 

typedef std::chrono::system_clock Clock; 

int main() 
{ 
    auto now = Clock::now(); 
    std::time_t now_c = Clock::to_time_t(now); 
    struct tm *parts = std::localtime(&now_c); 

    std::cout << 1900 + parts->tm_year << std::endl; 
    std::cout << 1 + parts->tm_mon << std::endl; 
    std::cout <<  parts->tm_mday << std::endl; 

    return 0; 
} 
+1

張貼工作示例活的http://ideone.com/yFm9P – sehe

+0

@PaoloM該標題是[ std :: time_t'](http://en.cppreference.com/w/cpp/chrono/c/time_t) – sehe

+0

對不起,在gcc 4.8下編譯時沒有''。它肯定包含在''中。 –