0001 function ts = set(ts, 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 VERSION = '$Id: set.m,v 1.8 2007/10/16 17:37:21 ingo Exp $';
0027
0028
0029 if nargin == 2
0030 if isa(ts, 'timespan') && ischar(varargin{1})
0031 in = char(varargin{1});
0032 if strcmp(in, 'Params')
0033 ts = plist();
0034 return
0035 elseif strcmp(in, 'Version')
0036 ts = VERSION;
0037 return
0038 end
0039 end
0040 end
0041
0042 if (nargout ~= 0)
0043
0044 fields = fieldnames(ts);
0045
0046 property_argin = varargin;
0047
0048 while length(property_argin) >= 2
0049 prop = property_argin{1};
0050 val = property_argin{2};
0051 property_argin = property_argin(3:end);
0052
0053 if ~ismember(prop, fields)
0054 error(['### ', prop, ' is not a valid timespan property.']);
0055 else
0056
0057
0058
0059 if strcmp(prop, 'start')
0060
0061 if isa(val, 'time')
0062 val = set(val, 'timeformat', ts.timeformat);
0063 ts.start = val;
0064 elseif ischar(val)
0065 ts.start = time(val, char(ts.timeformat));
0066 end
0067
0068
0069 ts = compute_interval(ts);
0070
0071
0072
0073
0074 elseif strcmp(prop, 'end')
0075
0076 if isa(val, 'time')
0077 val = set(val, 'timeformat', ts.timeformat);
0078 ts.end = val;
0079 elseif ischar(val)
0080 ts.end = time(val, char(ts.timeformat));
0081 end
0082
0083
0084 ts = compute_interval(ts);
0085
0086
0087
0088
0089 elseif strcmp(prop, 'timeformat')
0090
0091 if isa(val, 'timeformat')
0092 ts.timeformat = val;
0093
0094 ts.start = set(ts.start, 'timeformat', char(val));
0095 ts.end = set(ts.end, 'timeformat', char(val));
0096
0097 elseif ischar(val) || isnumeric(val)
0098 ts.start = set(ts.start, 'timeformat', val);
0099 ts.end = set(ts.end, 'timeformat', val);
0100
0101 ts.timeformat = ts.start.timeformat;
0102 end
0103
0104
0105
0106
0107 elseif strcmp(prop, 'timezone')
0108
0109 ts.start = set(ts.start, 'timezone', val);
0110 ts.end = set(ts.end, 'timezone', val);
0111
0112 ts.timezone = ts.start.timezone;
0113
0114
0115
0116
0117 else
0118 ts.(prop) = val;
0119 end
0120 end
0121
0122 end
0123
0124 else
0125 if ischar(varargin{2})
0126 error('### please use: %s = set(%s, ''%s'', ''%s'');', ...
0127 inputname(1), ...
0128 inputname(1), ...
0129 varargin{1}, ...
0130 varargin{2});
0131 elseif isnumeric(varargin{2})
0132 error('### please use: %s = set(%s, ''%s'', %d);', ...
0133 inputname(1), ...
0134 inputname(1), ...
0135 varargin{1}, ...
0136 varargin{2});
0137 else
0138 error('### please use: %s = set(%s, ''key'', ''value'');', ...
0139 inputname(1), ...
0140 inputname(1));
0141 end
0142 end