2013-02-02 62 views
2

我有一個UNIX time_t的,有沒有簡單的方法將其轉換爲一個time_t的,因此:「round」time_t到天/小時?

  1. 代表了time_t的當天午夜?
  2. 表示time_t的開始時間?
+0

什麼是一天的午夜意味着什麼?(它的_always_在00:00),以及這個小時的開始意味着什麼?(它的_always_ xx在xx:00) –

+0

@Ankinet Afaik,是的,午夜是在00: 00,而我從來沒有見過一個不是xx:00的小時開始。 – user964970

+0

@ uesr949760那麼問題是什麼呢?你想做什麼? –

回答

5

事情是這樣的:

time_t t = time(NULL); 

t -= (t % 86400); 

恆定86400 = 24 * 60 * 60 - 一個有用的數字要記住,我想......;)

2

讓電腦記住天體常量爲你:

time_t  arg, start_of_hour, start_of_day; 
struct tm *temp; 

temp = localtime(&arg); 
temp->tm_sec = 0; 
temp->tm_min = 0; 
start_of_hour = mktime(temp); 
temp->tm_hour = 0; 
start_of_day = mktime(temp); 

或使用gmtime如果你願意。

+0

不幸的是,'gmtime'沒有可移植的反轉。 –