Mercurial > hg > ltpda
diff m-toolbox/classes/@time/time.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/classes/@time/time.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,270 @@ +% TIME Time object class constructor. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% DESCRIPTION: Time object class constructor. Time objects are lightweight +% ltpda user objects that can be used to operate with times. +% Their use in the graphical user interface is limited to +% their creation. +% +% SUPERCLASSES: ltpda_nuo < ltpda_obj +% +% CONSTRUCTORS: +% +% t1 = time() +% t1 = time('14:00:05.000') +% t1 = time('2007-06-06 14:00:05') +% t1 = time('14:00:05 2007-06-06') +% t1 = time(1234.5) +% t1 = time([0 2000 6000]) +% t1 = time(plist) +% +% PLIST CONSTRUCTORS: +% +% From Milliseconds +% ----------------- +% +% Construct a time object from its representation in milliseconds since the +% unix epoch, 1970-01-01 00:00:00.000 UTC: +% +% 'milliseconds' - time in milliseconds. default: 0 +% +% From Time +% --------- +% +% Construct a time object from its representation as a string or its +% representation as number of seconds since the unix epoch, 1970-01-01 +% 00:00:00.000 UTC: +% +% 'time' - time string or double. default: '1970-01-01 00:00:00.000 UTC' +% +% If the time is specified as a string it is possible to specify the format +% and the timezone that must be used to interpret the string: +% +% 'timezone' - timezone. default: '' +% 'timeformat' - time format string. default: '' +% +% +% SEE ALSO: timespan +% +% VERSION: $Id: time.m,v 1.90 2011/03/28 17:02:29 ingo Exp $ +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +classdef time < ltpda_nuo + + % private read-only properties + properties (SetAccess = private) + utc_epoch_milli = 0; % unix epoch time in milliseconds + end + + % protected properties + properties (SetAccess = protected) + end + + % constant properties + properties (Constant = true) + timeformat; + timezone; + end + + % constant properties access methods + methods + function value = get.timezone(obj) + p = getappdata(0, 'LTPDApreferences'); + value = char(p.getTimePrefs.getTimeTimezone); + if ischar(value) + value = java.util.TimeZone.getTimeZone(value); + end + end + + function value = get.timeformat(obj) + p = getappdata(0, 'LTPDApreferences'); + value = char(p.getTimePrefs.getTimestringFormat); + end + end + + % constructor + methods + function obj = time(varargin) + + switch nargin + case 0 + % no input arguments. return the current time + obj.utc_epoch_milli = time.now(); + case 1 + % one input + + if isa(varargin{1}, 'time') + % t1 = time(time-object) + obj = copy(varargin{1}, 1); + + elseif ischar(varargin{1}) + % t1 = time('2007-08-03 10:00:00') + obj.utc_epoch_milli = time.parse(varargin{1}); + + elseif isstruct(varargin{1}) + % t1 = time(structure) + obj = fromStruct(obj, varargin{1}); + + elseif isnumeric(varargin{1}) + % t1 = time(12345) + for kk = 1:numel(varargin{1}) + obj(kk).utc_epoch_milli = 1000*varargin{1}(kk); + end + obj = reshape(obj, size(varargin{1})); + + elseif iscell(varargin{1}) + % t1 = time({'14:00:00', '15:00:00'}) + for kk = 1:numel(varargin{1}) + obj(kk) = time(varargin{1}{kk}); + end + obj = reshape(obj, size(varargin{1})); + + elseif isa(varargin{1}, 'plist') + % t1 = time(plist) + pl = varargin{1}; + pl_msec = find(pl, 'milliseconds'); + pl_time = find(pl, 'time'); + + if ~isempty(pl_msec) + % construct from milliseconds time definition + obj.utc_epoch_milli = pl_msec; + + elseif ~isempty(pl_time) + % construct from numefic value or string + if ischar(pl_time) + pl_timezone = find(pl, 'timezone'); + pl_format = find(pl, 'timeformat'); + obj.utc_epoch_milli = time.parse(pl_time, pl_format, pl_timezone); + elseif isnumeric(pl_time) + obj.utc_epoch_milli = 1000*pl_time; + end + + else + % if the plist is empty then return the default time object + if nparams(pl) == 0 + % default time object + else + error('### Unknown TIME constructor method.'); + end + end + + else + error('### Unknown single argument constructor.'); + end + + case 2 + % two input + + if iscellstr(varargin) + % t1 = time('14:00:00', 'HH:MM:SS') + obj.utc_epoch_milli = time.parse(varargin{1}, varargin{2}); + + elseif isnumeric(varargin{1}) && ischar(varargin{2}) + % t1 = time(1234.5, 'HH:MM:SS') + % NOTE: this is kept for back compatibility only. the second argument is just ignored + warning('LTPDA:time', 'time(numeric, char) costructor is deprecated and will be soon removed'); + obj = time(varargin{1}); + + elseif isa(varargin{1}, 'time') && ischar(varargin{2}) + % t1 = time(1234.5, 'HH:MM:SS') + % NOTE: this is kept for back compatibility only. the second argument is just ignored + warning('LTPDA:time', 'time(time, char) costructor is deprecated and will be soon removed'); + obj = time(varargin{1}); + + elseif isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl') && isa(varargin{2}, 'history') + % t1 = time(dom-node, history-objects) + obj = fromDom(obj, varargin{1}, varargin{2}); + + else + error('### Unknown constructor with two inputs: %s %s.', class(varargin{1}), class(varargin{2})); + end + + otherwise + error('### Unknown number of constructor arguments.'); + end + + end + end + + % public methods + methods + varargout = copy(varargin) + varargout = format(varargin) + varargout = minus(varargin) + varargout = plus(varargin) + varargout = string(varargin) + varargout = double(varargin) + varargout = datenum(varargin) + end + + % hidden methods + methods (Hidden = true) + varargout = attachToDom(varargin) + end + + % private methods + methods (Access = private) + end + + % protected methods + methods (Access = protected) + varargout = fromStruct(varargin) + varargout = fromDom(varargin) + end + + % static methods + methods (Static) + + varargout = parse(varargin); + varargout = getdateform(varargin); + varargout = matfrmt2javafrmt(varargin); + varargout = strftime(varargin); + varargout = getTimezones(varargin) + + function msec = now() + msec = java.util.Date().getTime(); + end + + function ii = getInfo(varargin) + ii = utils.helper.generic_getInfo(varargin{:}, 'time'); + end + + function out = VEROUT() + out = '$Id: time.m,v 1.90 2011/03/28 17:02:29 ingo Exp $'; + end + + function out = SETS() + out = {... + 'Default', ... + 'From Milliseconds', ... + 'From Time' }; + end + + function out = getDefaultPlist(set) + switch lower(set) + case 'default' + out = plist(); + case 'from milliseconds' + out = plist('milliseconds', 0); + case 'from time' + out = plist('time', '1970-01-01 00:00:00.000 UTC', 'timezone', '', 'timeformat', ''); + otherwise + error('### Unknown set ''%s'' to get the default plist.', set); + end + end + + function obj = initObjectWithSize(n,m) + obj = time.newarray([n m]); + end + + end % end static methods + + % static hidden methods + methods (Static = true, Hidden = true) + varargout = loadobj(varargin) + varargout = update_struct(varargin) + end + +end % end classdef +