C में वर्तमान समय प्राप्त करें


97

मैं अपने सिस्टम का वर्तमान समय प्राप्त करना चाहता हूं। उसके लिए मैं C में निम्नलिखित कोड का उपयोग कर रहा हूं:

time_t now;
struct tm *mytime = localtime(&now); 
if ( strftime(buffer, sizeof buffer, "%X", mytime) )
{
    printf("time1 = \"%s\"\n", buffer);
}

समस्या यह है कि यह कोड कुछ यादृच्छिक समय दे रहा है। इसके अलावा, यादृच्छिक समय हर बार अलग होता है। मुझे अपने सिस्टम का वर्तमान समय चाहिए।


जवाबों:


126

यहां से कॉपी-पेस्ट किया गया :

/* localtime example */
#include <stdio.h>
#include <time.h>

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;

  time ( &rawtime );
  timeinfo = localtime ( &rawtime );
  printf ( "Current local time and date: %s", asctime (timeinfo) );

  return 0;
}

(बस "शून्य" को मुख्य में जोड़ें) (सी में काम करने के लिए इसके लिए तर्क सूची)


किसी भी विचार कैसे दूसरे रास्ते गोल करने के लिए? स्ट्रिंग टू टीएम *?
गोयलर ४४४

6
मुझे पता है कि शायद यह थोड़ा देर हो चुकी है और आपने अब तक इसका पता लगाने की संभावना जताई है , लेकिन आप समय-समय पर strptimeफ़ंक्शन का उपयोग करेंगे । इससे बदलने के char *लिएstruct tm
KingRadical

1
ध्यान दें कि asctime () स्ट्रिंग के अंत में एक \ n छोड़ देगा।
h7r

4
उपरोक्त कोड निरर्थक है। asctime (स्थानीय समय (और कच्चे समय)) एक ही समय (और कच्चे समय) फ़ंक्शन कॉल के बराबर है।
दुलशी

1
FYI करें - आपको तर्क के रूप में किसी वस्तु की आवश्यकता नहीं है । लाना , , आदि पैरामीटर के रूप में वर्तमान समय वापस जाने के लिए काम करता है। time_ttime()NULL0
सुपर कैट

68

अपने nowवैरिएबल को इनिशियलाइज़ करें ।

time_t now = time(0); // Get the system time

localtimeसमारोह में पारित समय मूल्य में परिवर्तित किया जाता है time_tएक के लिए struct tm, यह वास्तव में सिस्टम का समय पुनः प्राप्त नहीं करता है।


35

आसान तरीका:

#include <time.h>
#include <stdio.h>

int main(void)
{
    time_t mytime = time(NULL);
    char * time_str = ctime(&mytime);
    time_str[strlen(time_str)-1] = '\0';
    printf("Current Time : %s\n", time_str);

    return 0;
}

1
यह अंत में एक अतिरिक्त नई लाइन जोड़ता है।
जेम्स को

बिना संकलन नहीं होगा#include <string.h>
Deanie

13

@Mingos से ऊपर के उत्तर का विस्तार करने के लिए, मैंने अपना समय एक विशिष्ट प्रारूप ([dd mm yyyy hh: mm: ss]) के लिए प्रारूपित करने के लिए नीचे लिखा।

// Store the formatted string of time in the output
void format_time(char *output){
    time_t rawtime;
    struct tm * timeinfo;

    time ( &rawtime );
    timeinfo = localtime ( &rawtime );

    sprintf(output, "[%d %d %d %d:%d:%d]",timeinfo->tm_mday, timeinfo->tm_mon + 1, timeinfo->tm_year + 1900, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
}

के बारे में अधिक जानकारी यहांstruct tm पाई जा सकती है


10
#include<stdio.h>
#include<time.h>

void main()
{
    time_t t;
    time(&t);
    printf("\n current time is : %s",ctime(&t));
}

6

वर्तमान स्थानीय समय पाने के लिए लोग इस फ़ंक्शन का उपयोग कर सकते हैं। यदि आप gmtime चाहते हैं, तो स्थानीय समय के बजाय gmtime फ़ंक्शन का उपयोग करें। चियर्स

time_t my_time;
struct tm * timeinfo; 
time (&my_time);
timeinfo = localtime (&my_time);
CCLog("year->%d",timeinfo->tm_year+1900);
CCLog("month->%d",timeinfo->tm_mon+1);
CCLog("date->%d",timeinfo->tm_mday);
CCLog("hour->%d",timeinfo->tm_hour);
CCLog("minutes->%d",timeinfo->tm_min);
CCLog("seconds->%d",timeinfo->tm_sec);

2

अगर आपको सिर्फ तारीख के बिना समय चाहिए।

  time_t rawtime;
  struct tm * timeinfo;
  time( &rawtime );
  timeinfo = localtime( &rawtime );
  printf("%02d:%02d:%02d", timeinfo->tm_hour, timeinfo->tm_min, 
    timeinfo->tm_sec);

1
#include <stdio.h>
#include <time.h>

void main()
{
    time_t t;
    time(&t);
    clrscr();

    printf("Today's date and time : %s",ctime(&t));
    getch();
}

क्या आप शुद्ध पाठ का उपयोग करके अपने समाधान पर थोड़ा विस्तार कर सकते हैं?
मैग्निलेक्स

2
void main()होना चाहिए int main(void)
कीथ थॉम्पसन

-9

दोस्तों मुझे एक नया तरीका मिल गया है सिस्टम टाइम। हालांकि इसकी लंबाई और मूर्खतापूर्ण कार्यों से भरा है, लेकिन इस तरह आप पूर्णांक प्रारूप में सिस्टम समय प्राप्त कर सकते हैं।

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char hc1,hc2,mc1,mc2;
    int hi1,hi2,mi1,mi2,hour,minute;
    system("echo %time% >time.txt");
    fp=fopen("time.txt","r");
    if(fp==NULL)
       exit(1) ;
    hc1=fgetc(fp);
    hc2=fgetc(fp);
    fgetc(fp);
    mc1=fgetc(fp);
    mc2=fgetc(fp);
    fclose(fp);
    remove("time.txt");
    hi1=hc1;
    hi2=hc2;
    mi1=mc1;
    mi2=mc2;
    hi1-=48;
    hi2-=48;
    mi1-=48;
    mi2-=48;
    hour=hi1*10+hi2;
    minute=mi1*10+mi2;
    printf("Current time is %d:%d\n",hour,minute);
    return 0;
}

7
लिनक्स में समय पुस्तकालय और सिस्टम कॉल अचरज में नहीं हैं, लेकिन फिर भी आप उनका उपयोग करना चाहते हैं, शेल कमांड पर नहीं जाएं और इसे पार्स करने का प्रयास करें। समय और समय और आरटीसी के लिए मैन पेज देखें।
दाना

18
यह भयानक है।
मैनुअल रीस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.