সি তে বর্তমান সময়টি পান


100

আমি আমার সিস্টেমের বর্তমান সময়টি পেতে চাই। তার জন্য আমি সি তে নিম্নলিখিত কোডটি ব্যবহার করছি:

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

সমস্যাটি হ'ল এই কোডটি কিছু এলোমেলো সময় দিচ্ছে। এছাড়াও, এলোমেলো সময়টি প্রতিবারের চেয়ে আলাদা। আমি আমার সিস্টেমের বর্তমান সময় চাই


উত্তর:


128

এখান থেকে অনুলিপি করা হয়েছে :

/* 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;
}

(এটি সিতে কাজ করার জন্য মূল () আর্গুমেন্ট তালিকায় কেবল "অকার্যকর" যুক্ত করুন)


অন্য উপায় রাউন্ড কিভাবে করতে কোন ধারণা? টিএম * স্ট্রিং?
Goaler444

7
আমি জানি এটি সম্ভবত কিছুটা দেরি হয়ে গেছে এবং আপনি সম্ভবত এটি এখনই বের করে ফেলেছেন তবে আপনি সময় strptimeফাংশনটি ব্যবহার করবেন h থেকে রূপান্তর char *করতেstruct tm
কিংআরডিকাল

4
নোট করুন যে asctime () স্ট্রিংয়ের শেষে একটি leave n ছাড়বে।
h7r

4
উপরের কোডটি নিরর্থক। অ্যাসটাইম (লোকালটাইম (এবং কাঁচা সময়)) একক সিটাইমের (এবং কাঁচা সময়) ফাংশন কলের সমান।
দুলেশি

4
এফওয়াইআই - আপনার পক্ষে যুক্তি হিসাবে কোনও বস্তুর দরকার নেই । ফেলে , ইত্যাদি প্যারামিটার হিসাবে বর্তমান সময় ফিরে যাওয়ার কাজ করে। time_ttime()NULL0
সুপার বিড়াল

69

আপনার nowপরিবর্তনশীল আরম্ভ করুন ।

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

localtimeফাংশন পাস সময় মান রূপান্তর করতে ব্যবহৃত হয় time_tএকটি থেকে struct tm, এটি একটি প্রকৃত সিস্টেমের সময় উদ্ধার করা হয় না।


36

সহজ পথ:

#include <time.h>
#include <stdio.h>
#include <string.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;
}

4
এটি শেষে একটি অতিরিক্ত নিউলাইন যুক্ত করে।
জেমস কো

4
ছাড়াই সংকলন করা হবে না#include <string.h>
Deanie

16

উপরের @ মেমোস থেকে উত্তরটি প্রসারিত করতে, আমি আমার সময়টিকে একটি নির্দিষ্ট বিন্যাসে ফর্ম্যাট করতে নীচের ফাংশনটি লিখেছি ([ডিডি মিমি ইয়াই এইচ: মিমি: এসএস])।

// 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 পাওয়া যাবে



7

ছেলেরা আপনি বর্তমান স্থানীয় সময় পেতে এই ফাংশনটি ব্যবহার করতে পারেন। আপনি যদি জিএমটাইম চান তবে লোকালটাইমের পরিবর্তে জিএমটাইম ফাংশনটি ব্যবহার করুন। চিয়ার্স

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();
}

খাঁটি পাঠ্য ব্যবহার করে আপনি কি আপনার সমাধানটির জন্য কিছুটা ব্যাখ্যা করতে পারেন?
Magnilex

4
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
এটা ভয়ানক।
ম্যানুয়েল রেইস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.