I want to get the current time of my system. For that I'm using the following code in C:
time_t now;
struct tm *mytime = localtime(&now);
if ( strftime(buffer, sizeof buffer, "%X", mytime) )
{ printf("time1 = \"%s\"\n", buffer);
}The problem is that this code is giving some random time. Also, the random time is different everytime. I want the current time of my system.
011 Answers
Copy-pasted from here:
/* 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;
}(just add void to the main() arguments list in order for this to work in C)
Initialize your now variable.
time_t now = time(0); // Get the system timeThe localtime function is used to convert the time value in the passed time_t to a struct tm, it doesn't actually retrieve the system time.
Easy way:
#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;
} 0 To extend the answer from @mingos above, I wrote the below function to format my time to a specific format ([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);
}More information about struct tm can be found here.
#include<stdio.h>
#include<time.h>
void main()
{ time_t t; time(&t); printf("\n current time is : %s",ctime(&t));
} You can use this function to get current local time. if you want gmt then use the gmtime function instead of localtime. cheers
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); If you just need the time without the date.
time_t rawtime; struct tm * timeinfo; time( &rawtime ); timeinfo = localtime( &rawtime ); printf("%02d:%02d:%02d", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); #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 It is recommonded to use localtime_s instead of localtime.
This should work.
time_t current_raw_time = time(0); // System time: number of seconds since 00:00, Jan 1 1970 UTC
struct tm day_time;
localtime_s(&day_time, ¤t_raw_time);day_time will have the following members:
struct tm
{ int tm_sec; // seconds after the minute - [0, 60] including leap second int tm_min; // minutes after the hour - [0, 59] int tm_hour; // hours since midnight - [0, 23] int tm_mday; // day of the month - [1, 31] int tm_mon; // months since January - [0, 11] int tm_year; // years since 1900 int tm_wday; // days since Sunday - [0, 6] int tm_yday; // days since January 1 - [0, 365] int tm_isdst; // daylight savings time flag
};Note that, localtime does not provide milliseconds.
LONG VERSION
src:
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{ time_t current_time; char* c_time_string; /* Obtain current time. */ current_time = time(NULL); if (current_time == ((time_t)-1)) { (void) fprintf(stderr, "Failure to obtain the current time.\n"); exit(EXIT_FAILURE); } /* Convert to local time format. */ c_time_string = ctime(¤t_time); if (c_time_string == NULL) { (void) fprintf(stderr, "Failure to convert the current time.\n"); exit(EXIT_FAILURE); } /* Print to stdout. ctime() has already added a terminating newline character. */ (void) printf("Current time is %s", c_time_string); exit(EXIT_SUCCESS);
}The output is:
Current time is Thu Sep 15 21:18:23 2016SHORT VERSION:
#include <stdio.h>
#include <time.h>
int main(int argc, char *argv[]) { time_t current_time; time(¤t_time); printf("%s", ctime(¤t_time));The output is:
Current time is Thu Jan 28 15:22:31 2021 1 guys i got a new way get system time. though its lengthy and is full of silly works but in this way you can get system time in integer format.
#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;
} 1