Home > classes > @time > set.m

set

PURPOSE ^

SET set time properties.

SYNOPSIS ^

function tt = set(tt, varargin)

DESCRIPTION ^

 SET set time properties.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 DESCRIPTION: SET set time properties.

 CALL:        tt = set(tt, 'property', 'value');
              tt = set(tt, 'property', 'value', 'direct');

 EXAMPLES:    tt = set(tt, 'utc_epoch_milli',  1185468272023);
              tt = set(tt, 'timezone',        'UTC');
              tt = set(tt, 'timeformat',      'yyyy-mm-dd HH:MM:SS');
              tt = set(tt, 'timeformat',       31);
              tt = set(tt, 'timeformat',       timeformat);
              tt = set(tt, 'time_str',        '2007-07-26 18:44:32');

 OPTION:      'direct' Sets the value direct without computing the new format

 VERSION:     $Id: set.m,v 1.8 2007/08/29 10:53:38 ingo Exp $

 HISTORY:     23-07-2007 Diepholz
                 Creation

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function tt = set(tt, varargin)
0002 % SET set time properties.
0003 %
0004 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0005 %
0006 % DESCRIPTION: SET set time properties.
0007 %
0008 % CALL:        tt = set(tt, 'property', 'value');
0009 %              tt = set(tt, 'property', 'value', 'direct');
0010 %
0011 % EXAMPLES:    tt = set(tt, 'utc_epoch_milli',  1185468272023);
0012 %              tt = set(tt, 'timezone',        'UTC');
0013 %              tt = set(tt, 'timeformat',      'yyyy-mm-dd HH:MM:SS');
0014 %              tt = set(tt, 'timeformat',       31);
0015 %              tt = set(tt, 'timeformat',       timeformat);
0016 %              tt = set(tt, 'time_str',        '2007-07-26 18:44:32');
0017 %
0018 % OPTION:      'direct' Sets the value direct without computing the new format
0019 %
0020 % VERSION:     $Id: set.m,v 1.8 2007/08/29 10:53:38 ingo Exp $
0021 %
0022 % HISTORY:     23-07-2007 Diepholz
0023 %                 Creation
0024 %
0025 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0026 
0027 if (nargout ~= 0)
0028 
0029   compute = true;
0030   if nargin == 4 && strcmp(varargin{3}, 'direct')
0031     compute = false;
0032   end
0033 
0034   fields = fieldnames(tt);
0035 
0036   property_argin = varargin;
0037 
0038   while length(property_argin) >= 2
0039     prop = property_argin{1};
0040     val  = property_argin{2};
0041     property_argin = property_argin(3:end);
0042 
0043     if ~ismember(prop, fields)
0044       error(['### ''', prop, ''' is not a valid time property.']);
0045     else
0046       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0047       % Set the timeformat AND transform the current time string to this format
0048       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0049       if (strcmp(prop, 'timeformat')) && (compute)
0050 
0051         if isa(val, 'timeformat')
0052           tt.timeformat = val;
0053           tt = set(tt, 'timeformat', char(val));
0054 
0055         else
0056           t_format = java.text.SimpleDateFormat(tt.timeformat.default_java_str);
0057           t_format.setTimeZone(tt.timezone);
0058           current_time_str = char(t_format.format (tt.utc_epoch_milli));
0059 
0060           d_num = datenum (current_time_str, tt.timeformat.default_matlab_str);
0061           tt.time_str = datestr(d_num, val);
0062 
0063           if isnumeric(val)
0064             tt.timeformat = set(tt.timeformat, 'format_nr', val);
0065           else
0066             tt.timeformat = set(tt.timeformat, 'format_str', val);
0067           end
0068         end
0069 
0070       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0071       % Set the timezone AND compute the current time string.
0072       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0073       elseif (strcmp(prop, 'timezone')) && (compute)
0074 
0075         available_IDs = cell(java.util.TimeZone.getAvailableIDs);
0076 
0077         if strcmp (class(val), 'sun.util.calendar.ZoneInfo')
0078           tt.timezone = val;
0079         elseif ischar(val) && ismember(val, available_IDs)
0080           tt.timezone = java.util.TimeZone.getTimeZone(val);
0081         else
0082           error (sprintf(['### Please use a timezone ID\n'...
0083                           'USE: get(time, ''timezone_IDs'') OR a java TimeZone']));
0084         end
0085 
0086         t_format = java.text.SimpleDateFormat(tt.timeformat.default_java_str);
0087         t_format.setTimeZone(tt.timezone);
0088         tt.time_str = char(t_format.format(tt.utc_epoch_milli));
0089 
0090         % Set the right time format
0091         if ~isempty(tt.timeformat.format_str)
0092           tt = set(tt, 'timeformat', tt.timeformat.format_str);
0093         elseif tt.timeformat.format_nr >= 0
0094           tt = set(tt, 'timeformat', tt.timeformat.format_nr);
0095         else
0096           error('### No time format is set. Should not happen.');
0097         end
0098 
0099       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0100       % Set the time_str AND compute the utc_epoch_milli
0101       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0102       elseif (strcmp(prop, 'time_str')) && (compute)
0103 
0104         if isempty(tt.timeformat.format_str)
0105           error (['### To set this property please set bevore a matlab format string.'...
0106                   sprintf('\n') ...
0107                   '    USE: tt = set(tt, ''timeformat'', ''yyyy-mm-dd HH:MM:SS'')']);
0108         end
0109 
0110         try
0111           d_num = datenum(val, tt.timeformat.format_str);
0112           new_time_str = datestr(d_num, tt.timeformat.default_matlab_str);
0113         catch
0114           error('### The timeformat ''%s'' does not match to the value ''%s''',...
0115                  tt.timeformat.format_str, val);
0116         end
0117 
0118         t_format = java.text.SimpleDateFormat(tt.timeformat.default_java_str);
0119         t_format.setTimeZone(tt.timezone);
0120         new_time = t_format.parse(new_time_str);
0121 
0122         tt.utc_epoch_milli = new_time.getTime;
0123         tt.time_str        = val;
0124 
0125         % Set the right time format
0126         if ~isempty(tt.timeformat.format_str)
0127           tt = set(tt, 'timeformat', tt.timeformat.format_str);
0128         elseif tt.timeformat.format_nr >= 0
0129           tt = set(tt, 'timeformat', tt.timeformat.format_nr);
0130         else
0131           error('### No time format is set. Should not happen.');
0132         end
0133 
0134       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0135       % Set the unix epoche time AND compute the time string
0136       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0137       elseif (strcmp(prop, 'utc_epoch_milli')) && (compute)
0138 
0139         if ~isnumeric(val)
0140           error('### The utc epoch time must be a number');
0141         end
0142 
0143         t_format = java.text.SimpleDateFormat(tt.timeformat.default_java_str);
0144         tt.time_str = char(t_format.format (val));
0145         tt.utc_epoch_milli = val;
0146 
0147         % Set the right time format
0148         if ~isempty(tt.timeformat.format_str)
0149           tt = set(tt, 'timeformat', tt.timeformat.format_str);
0150         elseif tt.timeformat.format_nr >= 0
0151           tt = set(tt, 'timeformat', tt.timeformat.format_nr);
0152         else
0153           error('### No time format is set. Should not happen.');
0154         end
0155 
0156       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0157       % set all other fields
0158       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0159       else
0160         tt.(prop) = val;
0161       end
0162     end
0163 
0164   end
0165 
0166 else
0167   if ischar(varargin{2})
0168     error('### please use: %s = set(%s, ''%s'', ''%s'');', ...
0169                         inputname(1), ...
0170                         inputname(1), ...
0171                         varargin{1},  ...
0172                         varargin{2});
0173   elseif isnumeric(varargin{2})
0174     error('### please use: %s = set(%s, ''%s'', %d);', ...
0175                         inputname(1), ...
0176                         inputname(1), ...
0177                         varargin{1},  ...
0178                         varargin{2});
0179   else
0180     error('### please use: %s = set(%s, ''key'', ''value'');', ...
0181                         inputname(1), ...
0182                         inputname(1));
0183   end
0184 end

Generated on Mon 03-Sep-2007 12:12:34 by m2html © 2003