I had a requirement to calculate the epoch time in milliseconds for midnight at the start of today.
This function calculates this value.
Action() { // Epoch time on 1/1/2010 00:00:00 was 1262304000
// N.B, If running this in subsequent years, change the hard coded value on the next line. // Value obtained from http://www.epochconverter.com/ //Declare integer iEpochStartYear – use it to hold the Epoch time (in secs) on 1st January this year.
int iEpochStartYear = 1262304000; //Declare integer to hold calculated value of Epoch time last midnight.
int iEpochSecsLastMidnight; //Declare integer to hold the current day (i.e. num of days since 1st Jan 2010)
int iCurrentDay; //Declare char to contain final output value (N.B in milliseconds, not seconds)
char sEpochMilliSecsLastMidnight[13]; // Current day is number of days since start of 1st Jan 2010.
// Need to subtract one day since midnight is nominally the end of yesterday (rather than the start of today). lr_save_datetime(“%j “, DATE_NOW – ONE_DAY, “sCurrentDay”); //Convert the SCurrentDay string to an integer
iCurrentDay = atoi(lr_eval_string(“{sCurrentDay}”)); //Calculate Epoch time (in seconds) for last midnight
iEpochSecsLastMidnight = iEpochStartYear + (iCurrentDay * 86400); //Write Epoch time (in milliseconds) for last midnight to a string
sprintf(sEpochMilliSecsLastMidnight, “%d000”, iEpochSecsLastMidnight); lr_output_message(sEpochMilliSecsLastMidnight); return 0; }