将日期转换为最接近的月末日期MATLAB

Mad*_*ddy 4 matlab date financial

我需要将datenumber转换为最接近的月末日期.我发现了一个在线链接,但对于大型矩阵来说效率非常低(http://www.mathworks.com/matlabcentral/fileexchange/26374-round-off-dates-and-times).Matlab(Financial Toolbox)是否具有内置功能?我找不到它.

date_in = 734421 ;
somefunction(date_in) --> Sept 2010
Run Code Online (Sandbox Code Playgroud)

谢谢!

gno*_*ice 6

基本上,这听起来像是在询问给定日期是否更接近前一个月或下个月.如果使用函数EOMDAY查找月末日期,则可以大大简化所涉及的逻辑,并使用ADDTODATE将当前月份向上或向下移动1.这是一个以日期编号作为输入的示例函数:

function closestString = closest_month(dateNumber)

  dateVector = datevec(dateNumber);
  daysInMonth = eomday(dateVector(1),dateVector(2));
  if dateVector(3) > daysInMonth/2
    dateNumber = addtodate(dateNumber,1,'month');
  else
    dateNumber = addtodate(dateNumber,-1,'month');
  end
  closestString = datestr(dateNumber,'mmm yyyy');

end
Run Code Online (Sandbox Code Playgroud)