0001 function varargout = timespan(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 function t_span = init
0031 t_span.start = time();
0032 t_span.end = time();
0033 t_span.timeformat = t_span.start.timeformat;
0034 t_span.interval = '';
0035 t_span.timezone = t_span.start.timezone;
0036
0037 t_span = class (t_span, 'timespan');
0038 end
0039
0040
0041
0042
0043 if nargin == 0
0044
0045 t_span = init;
0046
0047 elseif nargin == 1
0048
0049
0050 if isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl')
0051 tf = fromxml(varargin{1});
0052 varargout{1} = tf;
0053 else ischar(varargin{1})
0054
0055 filename = varargin{1};
0056 [path, name, ext, vers] = fileparts(filename);
0057 switch ext
0058 case '.mat'
0059 t_span = load(filename);
0060 case '.xml'
0061 t_span = xmlparse(timespan, filename);
0062 otherwise
0063 error('### Unknown file type.');
0064 end
0065
0066 varargout{1} = t_span;
0067
0068 end
0069
0070 elseif nargin == 2
0071
0072
0073 if ischar(varargin{1}) && ischar(varargin{2})
0074
0075 t_span = init;
0076 t_span.start = time(varargin{1});
0077 t_span.end = time(varargin{2});
0078
0079
0080 t_span = set(t_span, 'timeformat', t_span.start.timeformat);
0081 t_span = set(t_span, 'timezone', t_span.start.timezone);
0082
0083
0084 t_span = compute_interval(t_span);
0085
0086
0087 elseif isa(varargin{1}, 'database')
0088
0089 t_span = retrieve(varargin{1}, varargin{2:end});
0090
0091
0092 elseif isa(varargin{1}, 'time') && isa(varargin{2}, 'time')
0093
0094 t_span = init;
0095 t_span.start = varargin{1};
0096 t_span.end = varargin{2};
0097
0098
0099 t_span = set(t_span, 'timeformat', t_span.start.timeformat);
0100 t_span = set(t_span, 'timezone', t_span.start.timezone);
0101
0102
0103 t_span = compute_interval(t_span);
0104
0105
0106 elseif isa(varargin{1}, 'time') && ischar(varargin{2})
0107
0108 t_span = init;
0109 t_span.start = varargin{1};
0110 t_span.end = time(varargin{2}, char(t_span.start.timeformat));
0111
0112
0113 t_span = set(t_span, 'timeformat', t_span.start.timeformat);
0114 t_span = set(t_span, 'timezone', t_span.start.timezone);
0115
0116
0117 t_span = compute_interval(t_span);
0118
0119
0120 elseif ischar(varargin{1}) && isa(varargin{2}, 'time')
0121
0122 t_span = init;
0123 t_span.end = varargin{2};
0124 t_span.start = time(varargin{1}, char(t_span.end.timeformat));
0125
0126
0127 t_span = set(t_span, 'timeformat', t_span.start.timeformat);
0128 t_span = set(t_span, 'timezone', t_span.start.timezone);
0129
0130
0131 t_span = compute_interval(t_span);
0132
0133 else
0134 error (' ### Unknown constructor.');
0135
0136 end
0137
0138 elseif nargin == 3
0139
0140
0141 if ischar(varargin{1}) && ischar(varargin{2}) && ischar(varargin{3})
0142
0143 t_span = init;
0144 t_span.start = time(varargin{1}, varargin{3});
0145 t_span.end = time(varargin{2}, varargin{3});
0146 t_span.timeformat = t_span.start.timeformat;
0147
0148
0149 t_span = compute_interval(t_span);
0150
0151 elseif isa(varargin{1}, 'time') && isa(varargin{2}, 'time') && isa(varargin{3}, 'timeformat')
0152
0153 t_span = init;
0154 t_span.start = varargin{1};
0155 t_span.end = varargin{2};
0156 t_span.timeformat = varargin{3};
0157
0158 t_span.start = set(t_span.start, 'timeformat', t_span.timeformat);
0159 t_span.end = set(t_span.end, 'timeformat', t_span.timeformat);
0160
0161
0162 t_span = compute_interval(t_span);
0163
0164 else
0165 error (' ### Unknown constructor.');
0166
0167 end
0168
0169 else
0170
0171 error ('### Unknown number of inputs');
0172
0173 end
0174
0175 if t_span.start.utc_epoch_milli > t_span.end.utc_epoch_milli
0176 error('### The start time is larger than the end time.');
0177 end
0178
0179 varargout{1} = t_span;
0180
0181
0182 end