There are a lot of functions in dynamics Ax for dates. Followings are some date time functions I used extensively.
Some times we need to get month, year form date we can get these with the use of following functions in Dynamics ax
int _Months;
int _Years;//Get day from date
_DayOfMonth =dayOfMth(systemdateget());;
// Get month from date
_Months = dayOfMth(systemdateget());//Get month from date
//mthOfYr(systemdateget())//Get year from date
_Years =year(systemdateget());
Mkdate.
This functions help you create date from input values. For example if you have input for month and year, and want to create date for first of selected month of selected year, you can create it as.
Date _CustomDate;
Date _LastDateOf Month;
Int month_number;
Int years_numbers;
Int day_number;
;
Day_number=1;
Month_number=4 ; // say April
Years_Number=2012;
_customDate =mkdate(Day_number, Month_number, Years_Number);
Info _customDate;
Endmth;
This method returns the last date of month what ever the date we given to it. for example if we give the above created date then it will return the last date of april
_LastDateOfMonth = endmth(_customDate);
Usually we need loop through next month, next year , nextQtr,prevQtr, pervious month, pervious year.
We are use them as
Date _nextDate;
_NextDate = nextMth(today);
_NextDate=prevMth(today);
_NextDate=nextYr(today);
_NextDate =preYr(today);
_NextDate=prevQtr(today);
_NextDate=nextQtr(today);
Usually we have to convert date to UTCDateTime. That is usally case when we have to query on createdatetime filed of very table, which filled when new row is created.
We for this purpose we have to create use DateTimeUtil::newDateTime function. This function takes two values one for date, and second for time. So time values will be range beween 0 and 86400. It means when value time is 00:00:00 value will be 0 and when time is 23:59:59 then value will be 86400. Consider following code which creates start and end date for same date.
Date _Currentdate;
utcDateTime _UtcStartPeriod;
utcDateTime _UtcEndPeriod;
;
_currentdate=today();
_UtcCurrentPeriod = DateTimeUtil::newDateTime(_currentdate,0);
_UtcEndPeriod = DateTimeUtil::newDateTime(_UtcEndPeriod,86400);