diff --git a/matlab/utilities/dates/date2string.m b/matlab/utilities/dates/date2string.m new file mode 100644 index 000000000..bc3233925 --- /dev/null +++ b/matlab/utilities/dates/date2string.m @@ -0,0 +1,51 @@ +function s = date2string(varargin) + +% Returns date as a string. +% +% INPUTS +% o varargin{1} + dynDates object with one element, if nargin==1. +% + 1*2 vector of integers (first element is the year, second element is the subperiod), if nargin==2. +% o varargin{2} integer scalar equal to 1, 4, 12 or 52 (frequency). +% +% OUTPUTS +% o s string. + +% Copyright (C) 2013 Dynare Team +% +% This file is part of Dynare. +% +% Dynare is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% Dynare is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with Dynare. If not, see . + +if isequal(nargin,1) + if ~(isa(varargin{1},'dynDates') && isequal(length(varargin{1}),1)) + error(['dynDates::format: Input argument ' inputname(1) ' has to be a dynDates object with one element!']) + else + time = varargin{1}.time; + freq = varargin{1}.freq; + end +end + +if isequal(nargin,2) + if ~(isvector(varargin{1}) && isequal(length(varargin{1}),2) && all(isint(varargin{1})) && isscalar(varargin{2} && ismember(varargin{2},[1 4 12 52]))) + error(['dynDates::format: First input must be a 1*2 vector of integers and second input must be a scalar integer (1, 4, 12 or 52)!']) + else + time = varargin{1}; + freq = varargin{2}; + end +end + +s = [num2str(time(1)) freq2string(freq)]; +if freq>1 + s = strcat(s, num2str(time(2))); +end \ No newline at end of file diff --git a/matlab/utilities/dates/freq2string.m b/matlab/utilities/dates/freq2string.m new file mode 100644 index 000000000..2ef00da9f --- /dev/null +++ b/matlab/utilities/dates/freq2string.m @@ -0,0 +1,37 @@ +function s = freq2string(freq) + +% INPUTS +% o freq scalar integer, equal to 1, 4, 12 or 52 (resp. annual, quaterly, monthly or weekly) +% +% OUTPUTS +% o s character, equal to Y, Q, M or W (resp. annual, quaterly, monthly or weekly) + +% Copyright (C) 2013 Dynare Team +% +% This file is part of Dynare. +% +% Dynare is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% Dynare is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with Dynare. If not, see . + +switch freq + case 1 + s = 'Y'; + case 4 + s = 'Q'; + case 12 + s = 'M'; + case 52 + s = 'W'; + otherwise + error('dynDates::freq2string: Unknown frequency!') +end \ No newline at end of file diff --git a/matlab/utilities/dates/string2freq.m b/matlab/utilities/dates/string2freq.m new file mode 100644 index 000000000..f0b46bc3b --- /dev/null +++ b/matlab/utilities/dates/string2freq.m @@ -0,0 +1,37 @@ +function freq = string2freq(s) + +% INPUTS +% o s character, equal to Y, Q, M or W (resp. annual, quaterly, monthly or weekly) +% +% OUTPUTS +% o freq scalar integer, equal to 1, 4, 12 or 52 (resp. annual, quaterly, monthly or weekly) + +% Copyright (C) 2013 Dynare Team +% +% This file is part of Dynare. +% +% Dynare is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% Dynare is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with Dynare. If not, see . + +switch s + case 'Y' + freq = 1; + case 'Q' + freq = 4; + case 'M' + freq = 12; + case 'W' + freq = 52; + otherwise + error('dynDates::freq2string: Unknown frequency!') +end \ No newline at end of file