Calculate epoch time for last midnight

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

Author: Richard Bishop

http://about.me/richard_bishop