मैं समय-समय मान से पूर्णांक मानों के रूप में घंटे, मिनट और सेकंड निकालने के लिए युग के बाद सेकंड का प्रतिनिधित्व करना चाहता हूं।time_t से घंटे निकालने के लिए कैसे?
घंटों के लिए मूल्य सही नहीं है। क्यूं कर?
#include <stdio.h>
#include <time.h>
#include <unistd.h>
int main()
{
char buf[64];
while (1) {
time_t t = time(NULL);
struct tm *tmp = gmtime(&t);
int h = (t/360) % 24; /* ### My problem. */
int m = (t/60) % 60;
int s = t % 60;
printf("%02d:%02d:%02d\n", h, m, s);
/* For reference, extracts the correct values. */
strftime(buf, sizeof(buf), "%H:%M:%S\n", tmp);
puts(buf);
sleep(1);
}
}
आउटपुट (घंटे 10 होना चाहिए)
06:15:35
10:15:35
06:15:36
10:15:36
06:15:37
10:15:37
"int एच = (टी/3600)% 24; ..." _assumption_ 'time_t' पूर्णांक सेकंड में है। यद्यपि यह सामान्य है, इसलिए इसे सी द्वारा परिभाषित नहीं किया गया है। पोर्टेबल कोड के लिए 'gmtime()/localtime()' या 'difftime()' का उपयोग करें। – chux