Quintiq file version 2.0 #parent: #root Method GetLastMonth ( DateTime timestamp ) as DateTime id:Method_Kpi_GlobalState_GetLastMonth { #keys: '[136398.1.809533354]' Body: [* // Returns the timestamp with its month reduced by 1. // Takes year-crossing into account. timezone := TimeZone::ObjectTimeZone( KpiTracker ); out := timestamp.StartOfMonth( timezone ) .AddAsPeriod( timezone, -Duration::Days( 1 ) ) .StartOfMonth( timezone ) .AddAsPeriod( timezone, timestamp - timestamp.StartOfMonth( timezone ) ); if( out.StartOfMonth( timezone ) = timestamp.StartOfMonth( timezone ) ) { // When it is 29-31 March, the Feb do not have those dates, then just get Feb 28 out:= timestamp.StartOfMonth( timezone ).AddAsPeriod( timezone, -Duration::Days( 1 ) ); } return out; *] }