October 23, 2014
C/C++ : datenum code
Matlab have a function to convert string of date to double number. This double number represent preset day from (January 0, 0000). This function name is “datenum”. I want to use this function in C/C++. I have research this function and create a simple code how to use datenum in our C/C++ code (convert datenum to C/C++) . Please check the full code below :
#include <stdlib.h> #include <string.h> #include <iostream> #include <stdio.h> using namespace std; static int cumdays[] = {0, 0,31,59,90,120,151,181,212,243,273,304,334}; double datenum(int year, int mon, int day, int hour, int imin, int sec, int mil) { int tmp1, tmp2, tmp3; double tmp4, tmp5; double dNum; /* Calculate the serial date number:*/ tmp1 = 365 * year + cumdays[mon] + day; tmp2 = year / 4 - year / 100 + year / 400; tmp3 = (year % 4 != 0) - (year % 100 != 0) + (year % 400 != 0); tmp4 = (double) (tmp1+tmp2+tmp3); tmp5 = (hour * 3600000 + imin * 60000 + sec * 1000 + mil) / 86400000.0; dNum = tmp4 + tmp5; if (mon > 2) { if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { dNum += 1.0; } } return(dNum); } int main(int argc, char **argv) { double currT; currT = datenum(2014, 12, 29, 12, 45, 20, 123); cout.precision(15); cout<<"TIME = "<< currT << endl; return(0); }
Compile this program using command :
g++ demo_datenum.cpp -o demo_datenum
Running the program :
toto@ubuntu:~/Documents$ ./demo_datenum TIME = 735962.531482905
If you check using Matlab, this output have same result.