2013-03-14 77 views
0

嘿傢伙所以我試圖創建與時代的時間戳。到目前爲止,小時分秒和毫秒沒有問題。然而,我正處在一個十字路口,看看如何計算出幾個月和幾個小時的日子。首先有2個問題。每個月的天數都有變化,沒有一致的模式和解決閏年的問題。我一直在努力如何實施一個合適的系統。我想我可以去有條件的路線,但是也許有一些我也可以實現的表格(教練給出的提示)算法與時代和幾個月的時間.... C++

到目前爲止,這是我剛剛達到的算法,如果任何人有興趣。

28 ExpandedTime* localTime(struct timeval* tv, ExpandedTime* etime) 
29 { 
30  tzset();         // Corrects timezone 
31 
32  int epochT = (tv->tv_sec) - timezone;  // Epoch seconds with 
33  int epochUT = tv->tv_usec;     // Timezone correction 
34 
35  int seconds = epochT % 60; 
36  epochT /= 60; 
37  etime->et_sec = seconds; 
38  etime->et_usec = epochUT; 
39 
40  int minutes = epochT % 60; 
41  epochT /= 60; 
42  etime->et_min = minutes; 
43 
44  int hours = (epochT % 24) + daylight;  // Hours with DST correction 
45  epochT /= 24; 
46  etime->et_hour = hours; 
47 
48 
49  printf("%d,%d,%d\n", seconds, minutes, hours); 
50  printf("%d\n", epochUT); 
51  printf("%d\n", timezone); 
52  printf("%d\n", daylight); 
53  return etime; 
54 
55 } 
56 
57 char* formatTime(struct timeval* tv, char* buf, size_t len) 
58 { 
59 
60 struct ExpandedTime etime2; 
61 localTime(tv, &etime2); 
62 snprintf(); 
63 } 

其未完成的,我只是我目前停留在如何實現年月日。如果有人可能只是導致我在正確的方向,將不勝感激。

+1

你是在做這個練習嗎,還是因爲找不到合適的班級呢? – 2013-03-14 16:58:52

+0

這是一個練習......這可能是一個更簡單的方法來解決這個問題,但我僅限於練習限制。如果這有幫助,那麼他給我們提供了一個練習:「從UNIX Epoch開始可以很容易地確定天數,但除此之外它變得複雜了。關鍵是要實現下一個更大的統一週期不是幾個月或者年,但四年;對於天數和四年之間的單位,您需要特殊情況;這些情況可以用條件或表格編碼「 – PresidentRFresh 2013-03-14 17:03:10

+0

繼續說:」您可能想要一個包含每月和每月名稱日期的表格,你需要兩張表,一張用於閏年,另一張用於非閏年,也許你可以合併這兩張表,或者在4年的週期內有一張表,無論如何,一旦你確定了你正在使用的四年週期,通過表格走過的剩餘天數,以確定月份名稱和月份的日期。「當他說表時,他指的是結構嗎?我只是困惑於他在這裏得到什麼。 – PresidentRFresh 2013-03-14 17:05:23

回答

0

轉換Unix紀元日期(1/1/1970 00:00)轉換爲相應的Julian日期,將時間從秒轉換爲日,並將結果添加到epoch的Julian日期。這給你所需時間的Julian日期。最後,將Julian日期轉換回日期和時間。

你可以找到適當的公式轉換爲網頁上的朱利安日期。

相關問題