Conversion of UTC timestamp to epoch time in C [duplicate]












-2
















This question already has an answer here:




  • how to convert datetime to unix timestamp in c?

    6 answers




I want to convert UTC timestamp in epoch time seconds considering DST in C language. I am doing development on VS 2005 as this is legacy product. I gone through various websites but it is not useful.



We can do this by boost library but it is not recommended.



I am passing input as "2017-03-12T01:00:00Z" i.e. UTC timestamp, and I want epoch time of it i.e. in seconds. When I convert this epoch time back to UTC time, it should give me exact result as input timestamp.










share|improve this question















marked as duplicate by gsamaras, Sander De Dycker, hyde, Jonathan Leffler c
Users with the  c badge can single-handedly close c questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 16 '18 at 12:27


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.



















  • boost? in C? how?

    – Sourav Ghosh
    Nov 16 '18 at 8:20











  • @SouravGhosh The product mixed of C and C++.

    – Prashant
    Nov 16 '18 at 8:22











  • That's fine, but I never known boost can be used in C.

    – Sourav Ghosh
    Nov 16 '18 at 8:23











  • @SouravGhosh All it requires is cdecl wrapper function in C++ ,which can be called from C, and then uses boost.

    – hyde
    Nov 16 '18 at 8:41











  • @hyde Technically correct..but is it worth it? Sorry if my statement was not clear earlier. :)

    – Sourav Ghosh
    Nov 16 '18 at 8:43
















-2
















This question already has an answer here:




  • how to convert datetime to unix timestamp in c?

    6 answers




I want to convert UTC timestamp in epoch time seconds considering DST in C language. I am doing development on VS 2005 as this is legacy product. I gone through various websites but it is not useful.



We can do this by boost library but it is not recommended.



I am passing input as "2017-03-12T01:00:00Z" i.e. UTC timestamp, and I want epoch time of it i.e. in seconds. When I convert this epoch time back to UTC time, it should give me exact result as input timestamp.










share|improve this question















marked as duplicate by gsamaras, Sander De Dycker, hyde, Jonathan Leffler c
Users with the  c badge can single-handedly close c questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 16 '18 at 12:27


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.



















  • boost? in C? how?

    – Sourav Ghosh
    Nov 16 '18 at 8:20











  • @SouravGhosh The product mixed of C and C++.

    – Prashant
    Nov 16 '18 at 8:22











  • That's fine, but I never known boost can be used in C.

    – Sourav Ghosh
    Nov 16 '18 at 8:23











  • @SouravGhosh All it requires is cdecl wrapper function in C++ ,which can be called from C, and then uses boost.

    – hyde
    Nov 16 '18 at 8:41











  • @hyde Technically correct..but is it worth it? Sorry if my statement was not clear earlier. :)

    – Sourav Ghosh
    Nov 16 '18 at 8:43














-2












-2








-2









This question already has an answer here:




  • how to convert datetime to unix timestamp in c?

    6 answers




I want to convert UTC timestamp in epoch time seconds considering DST in C language. I am doing development on VS 2005 as this is legacy product. I gone through various websites but it is not useful.



We can do this by boost library but it is not recommended.



I am passing input as "2017-03-12T01:00:00Z" i.e. UTC timestamp, and I want epoch time of it i.e. in seconds. When I convert this epoch time back to UTC time, it should give me exact result as input timestamp.










share|improve this question

















This question already has an answer here:




  • how to convert datetime to unix timestamp in c?

    6 answers




I want to convert UTC timestamp in epoch time seconds considering DST in C language. I am doing development on VS 2005 as this is legacy product. I gone through various websites but it is not useful.



We can do this by boost library but it is not recommended.



I am passing input as "2017-03-12T01:00:00Z" i.e. UTC timestamp, and I want epoch time of it i.e. in seconds. When I convert this epoch time back to UTC time, it should give me exact result as input timestamp.





This question already has an answer here:




  • how to convert datetime to unix timestamp in c?

    6 answers








c dst






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 16 '18 at 8:39









Lennart

6,167125266




6,167125266










asked Nov 16 '18 at 8:18









PrashantPrashant

11




11




marked as duplicate by gsamaras, Sander De Dycker, hyde, Jonathan Leffler c
Users with the  c badge can single-handedly close c questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 16 '18 at 12:27


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.









marked as duplicate by gsamaras, Sander De Dycker, hyde, Jonathan Leffler c
Users with the  c badge can single-handedly close c questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 16 '18 at 12:27


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.















  • boost? in C? how?

    – Sourav Ghosh
    Nov 16 '18 at 8:20











  • @SouravGhosh The product mixed of C and C++.

    – Prashant
    Nov 16 '18 at 8:22











  • That's fine, but I never known boost can be used in C.

    – Sourav Ghosh
    Nov 16 '18 at 8:23











  • @SouravGhosh All it requires is cdecl wrapper function in C++ ,which can be called from C, and then uses boost.

    – hyde
    Nov 16 '18 at 8:41











  • @hyde Technically correct..but is it worth it? Sorry if my statement was not clear earlier. :)

    – Sourav Ghosh
    Nov 16 '18 at 8:43



















  • boost? in C? how?

    – Sourav Ghosh
    Nov 16 '18 at 8:20











  • @SouravGhosh The product mixed of C and C++.

    – Prashant
    Nov 16 '18 at 8:22











  • That's fine, but I never known boost can be used in C.

    – Sourav Ghosh
    Nov 16 '18 at 8:23











  • @SouravGhosh All it requires is cdecl wrapper function in C++ ,which can be called from C, and then uses boost.

    – hyde
    Nov 16 '18 at 8:41











  • @hyde Technically correct..but is it worth it? Sorry if my statement was not clear earlier. :)

    – Sourav Ghosh
    Nov 16 '18 at 8:43

















boost? in C? how?

– Sourav Ghosh
Nov 16 '18 at 8:20





boost? in C? how?

– Sourav Ghosh
Nov 16 '18 at 8:20













@SouravGhosh The product mixed of C and C++.

– Prashant
Nov 16 '18 at 8:22





@SouravGhosh The product mixed of C and C++.

– Prashant
Nov 16 '18 at 8:22













That's fine, but I never known boost can be used in C.

– Sourav Ghosh
Nov 16 '18 at 8:23





That's fine, but I never known boost can be used in C.

– Sourav Ghosh
Nov 16 '18 at 8:23













@SouravGhosh All it requires is cdecl wrapper function in C++ ,which can be called from C, and then uses boost.

– hyde
Nov 16 '18 at 8:41





@SouravGhosh All it requires is cdecl wrapper function in C++ ,which can be called from C, and then uses boost.

– hyde
Nov 16 '18 at 8:41













@hyde Technically correct..but is it worth it? Sorry if my statement was not clear earlier. :)

– Sourav Ghosh
Nov 16 '18 at 8:43





@hyde Technically correct..but is it worth it? Sorry if my statement was not clear earlier. :)

– Sourav Ghosh
Nov 16 '18 at 8:43












1 Answer
1






active

oldest

votes


















0














You can make use of mktime().



According to the man page, you have to parse the input and fill up the structure tm, defined as



struct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month */
int tm_year; /* year */
int tm_wday; /* day of the week */
int tm_yday; /* day in the year */
int tm_isdst; /* daylight saving time */
};


and then, make a call to mktime() as



time_t result;
result = mktime(&t);


Point to note: Please read the linked manual and check for the applicable values of the structure members, especially




tm_mon



The number of months since January, in the range 0 to 11.




and




tm_year



The number of years since 1900.







share|improve this answer


























  • When I convert the UTC timestamp into "tm" structure and passed it to mktime(), it result in epoch time but when I convert back epoch time to "tm" structure again using gmtime(), there is gap of 8 hours.

    – Prashant
    Nov 16 '18 at 8:41











  • @Prashant Please show the code that is not working.

    – Sourav Ghosh
    Nov 16 '18 at 8:48











  • When I convert the UTC timestamp into "tm" structure and passed it to mktime(), it result in epoch time but when I convert back epoch time to "tm" structure again using gmtime(), there is gap of 8 hours. Eg tm localTMTest; localTMTest.tm_year = 2017 - 1900; localTMTest.tm_mon = 3 - 1; localTMTest.tm_mday = 12; localTMTest.tm_hour = 0; localTMTest.tm_min = 0; localTMTest.tm_sec = 0; localTMTest.tm_isdst = -1; time_t localTimeTest = mktime(&localTMTest); struct tm *ptm = gmtime(&localTimeTest); In ptm, hour is set to 8 because my timezone is set to "UTC-8 PST"

    – Prashant
    Nov 16 '18 at 8:50













  • @Prashant I dont see that, check this.

    – Sourav Ghosh
    Nov 16 '18 at 9:01











  • Thanks Sourav. But on my system it is showing 8 hours due to timezone in effect. When I run with IST timezone it is giving me date as 11 and time as 18:30 due to +05.30 time difference.

    – Prashant
    Nov 16 '18 at 9:37


















1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









0














You can make use of mktime().



According to the man page, you have to parse the input and fill up the structure tm, defined as



struct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month */
int tm_year; /* year */
int tm_wday; /* day of the week */
int tm_yday; /* day in the year */
int tm_isdst; /* daylight saving time */
};


and then, make a call to mktime() as



time_t result;
result = mktime(&t);


Point to note: Please read the linked manual and check for the applicable values of the structure members, especially




tm_mon



The number of months since January, in the range 0 to 11.




and




tm_year



The number of years since 1900.







share|improve this answer


























  • When I convert the UTC timestamp into "tm" structure and passed it to mktime(), it result in epoch time but when I convert back epoch time to "tm" structure again using gmtime(), there is gap of 8 hours.

    – Prashant
    Nov 16 '18 at 8:41











  • @Prashant Please show the code that is not working.

    – Sourav Ghosh
    Nov 16 '18 at 8:48











  • When I convert the UTC timestamp into "tm" structure and passed it to mktime(), it result in epoch time but when I convert back epoch time to "tm" structure again using gmtime(), there is gap of 8 hours. Eg tm localTMTest; localTMTest.tm_year = 2017 - 1900; localTMTest.tm_mon = 3 - 1; localTMTest.tm_mday = 12; localTMTest.tm_hour = 0; localTMTest.tm_min = 0; localTMTest.tm_sec = 0; localTMTest.tm_isdst = -1; time_t localTimeTest = mktime(&localTMTest); struct tm *ptm = gmtime(&localTimeTest); In ptm, hour is set to 8 because my timezone is set to "UTC-8 PST"

    – Prashant
    Nov 16 '18 at 8:50













  • @Prashant I dont see that, check this.

    – Sourav Ghosh
    Nov 16 '18 at 9:01











  • Thanks Sourav. But on my system it is showing 8 hours due to timezone in effect. When I run with IST timezone it is giving me date as 11 and time as 18:30 due to +05.30 time difference.

    – Prashant
    Nov 16 '18 at 9:37
















0














You can make use of mktime().



According to the man page, you have to parse the input and fill up the structure tm, defined as



struct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month */
int tm_year; /* year */
int tm_wday; /* day of the week */
int tm_yday; /* day in the year */
int tm_isdst; /* daylight saving time */
};


and then, make a call to mktime() as



time_t result;
result = mktime(&t);


Point to note: Please read the linked manual and check for the applicable values of the structure members, especially




tm_mon



The number of months since January, in the range 0 to 11.




and




tm_year



The number of years since 1900.







share|improve this answer


























  • When I convert the UTC timestamp into "tm" structure and passed it to mktime(), it result in epoch time but when I convert back epoch time to "tm" structure again using gmtime(), there is gap of 8 hours.

    – Prashant
    Nov 16 '18 at 8:41











  • @Prashant Please show the code that is not working.

    – Sourav Ghosh
    Nov 16 '18 at 8:48











  • When I convert the UTC timestamp into "tm" structure and passed it to mktime(), it result in epoch time but when I convert back epoch time to "tm" structure again using gmtime(), there is gap of 8 hours. Eg tm localTMTest; localTMTest.tm_year = 2017 - 1900; localTMTest.tm_mon = 3 - 1; localTMTest.tm_mday = 12; localTMTest.tm_hour = 0; localTMTest.tm_min = 0; localTMTest.tm_sec = 0; localTMTest.tm_isdst = -1; time_t localTimeTest = mktime(&localTMTest); struct tm *ptm = gmtime(&localTimeTest); In ptm, hour is set to 8 because my timezone is set to "UTC-8 PST"

    – Prashant
    Nov 16 '18 at 8:50













  • @Prashant I dont see that, check this.

    – Sourav Ghosh
    Nov 16 '18 at 9:01











  • Thanks Sourav. But on my system it is showing 8 hours due to timezone in effect. When I run with IST timezone it is giving me date as 11 and time as 18:30 due to +05.30 time difference.

    – Prashant
    Nov 16 '18 at 9:37














0












0








0







You can make use of mktime().



According to the man page, you have to parse the input and fill up the structure tm, defined as



struct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month */
int tm_year; /* year */
int tm_wday; /* day of the week */
int tm_yday; /* day in the year */
int tm_isdst; /* daylight saving time */
};


and then, make a call to mktime() as



time_t result;
result = mktime(&t);


Point to note: Please read the linked manual and check for the applicable values of the structure members, especially




tm_mon



The number of months since January, in the range 0 to 11.




and




tm_year



The number of years since 1900.







share|improve this answer















You can make use of mktime().



According to the man page, you have to parse the input and fill up the structure tm, defined as



struct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month */
int tm_year; /* year */
int tm_wday; /* day of the week */
int tm_yday; /* day in the year */
int tm_isdst; /* daylight saving time */
};


and then, make a call to mktime() as



time_t result;
result = mktime(&t);


Point to note: Please read the linked manual and check for the applicable values of the structure members, especially




tm_mon



The number of months since January, in the range 0 to 11.




and




tm_year



The number of years since 1900.








share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 16 '18 at 8:41

























answered Nov 16 '18 at 8:32









Sourav GhoshSourav Ghosh

111k15132191




111k15132191













  • When I convert the UTC timestamp into "tm" structure and passed it to mktime(), it result in epoch time but when I convert back epoch time to "tm" structure again using gmtime(), there is gap of 8 hours.

    – Prashant
    Nov 16 '18 at 8:41











  • @Prashant Please show the code that is not working.

    – Sourav Ghosh
    Nov 16 '18 at 8:48











  • When I convert the UTC timestamp into "tm" structure and passed it to mktime(), it result in epoch time but when I convert back epoch time to "tm" structure again using gmtime(), there is gap of 8 hours. Eg tm localTMTest; localTMTest.tm_year = 2017 - 1900; localTMTest.tm_mon = 3 - 1; localTMTest.tm_mday = 12; localTMTest.tm_hour = 0; localTMTest.tm_min = 0; localTMTest.tm_sec = 0; localTMTest.tm_isdst = -1; time_t localTimeTest = mktime(&localTMTest); struct tm *ptm = gmtime(&localTimeTest); In ptm, hour is set to 8 because my timezone is set to "UTC-8 PST"

    – Prashant
    Nov 16 '18 at 8:50













  • @Prashant I dont see that, check this.

    – Sourav Ghosh
    Nov 16 '18 at 9:01











  • Thanks Sourav. But on my system it is showing 8 hours due to timezone in effect. When I run with IST timezone it is giving me date as 11 and time as 18:30 due to +05.30 time difference.

    – Prashant
    Nov 16 '18 at 9:37



















  • When I convert the UTC timestamp into "tm" structure and passed it to mktime(), it result in epoch time but when I convert back epoch time to "tm" structure again using gmtime(), there is gap of 8 hours.

    – Prashant
    Nov 16 '18 at 8:41











  • @Prashant Please show the code that is not working.

    – Sourav Ghosh
    Nov 16 '18 at 8:48











  • When I convert the UTC timestamp into "tm" structure and passed it to mktime(), it result in epoch time but when I convert back epoch time to "tm" structure again using gmtime(), there is gap of 8 hours. Eg tm localTMTest; localTMTest.tm_year = 2017 - 1900; localTMTest.tm_mon = 3 - 1; localTMTest.tm_mday = 12; localTMTest.tm_hour = 0; localTMTest.tm_min = 0; localTMTest.tm_sec = 0; localTMTest.tm_isdst = -1; time_t localTimeTest = mktime(&localTMTest); struct tm *ptm = gmtime(&localTimeTest); In ptm, hour is set to 8 because my timezone is set to "UTC-8 PST"

    – Prashant
    Nov 16 '18 at 8:50













  • @Prashant I dont see that, check this.

    – Sourav Ghosh
    Nov 16 '18 at 9:01











  • Thanks Sourav. But on my system it is showing 8 hours due to timezone in effect. When I run with IST timezone it is giving me date as 11 and time as 18:30 due to +05.30 time difference.

    – Prashant
    Nov 16 '18 at 9:37

















When I convert the UTC timestamp into "tm" structure and passed it to mktime(), it result in epoch time but when I convert back epoch time to "tm" structure again using gmtime(), there is gap of 8 hours.

– Prashant
Nov 16 '18 at 8:41





When I convert the UTC timestamp into "tm" structure and passed it to mktime(), it result in epoch time but when I convert back epoch time to "tm" structure again using gmtime(), there is gap of 8 hours.

– Prashant
Nov 16 '18 at 8:41













@Prashant Please show the code that is not working.

– Sourav Ghosh
Nov 16 '18 at 8:48





@Prashant Please show the code that is not working.

– Sourav Ghosh
Nov 16 '18 at 8:48













When I convert the UTC timestamp into "tm" structure and passed it to mktime(), it result in epoch time but when I convert back epoch time to "tm" structure again using gmtime(), there is gap of 8 hours. Eg tm localTMTest; localTMTest.tm_year = 2017 - 1900; localTMTest.tm_mon = 3 - 1; localTMTest.tm_mday = 12; localTMTest.tm_hour = 0; localTMTest.tm_min = 0; localTMTest.tm_sec = 0; localTMTest.tm_isdst = -1; time_t localTimeTest = mktime(&localTMTest); struct tm *ptm = gmtime(&localTimeTest); In ptm, hour is set to 8 because my timezone is set to "UTC-8 PST"

– Prashant
Nov 16 '18 at 8:50







When I convert the UTC timestamp into "tm" structure and passed it to mktime(), it result in epoch time but when I convert back epoch time to "tm" structure again using gmtime(), there is gap of 8 hours. Eg tm localTMTest; localTMTest.tm_year = 2017 - 1900; localTMTest.tm_mon = 3 - 1; localTMTest.tm_mday = 12; localTMTest.tm_hour = 0; localTMTest.tm_min = 0; localTMTest.tm_sec = 0; localTMTest.tm_isdst = -1; time_t localTimeTest = mktime(&localTMTest); struct tm *ptm = gmtime(&localTimeTest); In ptm, hour is set to 8 because my timezone is set to "UTC-8 PST"

– Prashant
Nov 16 '18 at 8:50















@Prashant I dont see that, check this.

– Sourav Ghosh
Nov 16 '18 at 9:01





@Prashant I dont see that, check this.

– Sourav Ghosh
Nov 16 '18 at 9:01













Thanks Sourav. But on my system it is showing 8 hours due to timezone in effect. When I run with IST timezone it is giving me date as 11 and time as 18:30 due to +05.30 time difference.

– Prashant
Nov 16 '18 at 9:37





Thanks Sourav. But on my system it is showing 8 hours due to timezone in effect. When I run with IST timezone it is giving me date as 11 and time as 18:30 due to +05.30 time difference.

– Prashant
Nov 16 '18 at 9:37





Popular posts from this blog

Xamarin.iOS Cant Deploy on Iphone

Glorious Revolution

Dulmage-Mendelsohn matrix decomposition in Python