diff m-toolbox/classes/@time/strftime.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/strftime.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,67 @@
+% STRFTIME Formats a time expressed as msec since the epoch into a string
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% 
+% DESCRIPTION: STRFTIME(MSEC, FRMT, TIMEZONE) Formats the time MSEC, expressed
+% as milliseconds since the unix epoch, 1970-01-01 00:00:00.000 UTC, into a
+% string, accordingly to the format descrption FRMT and the timezone TIMEZONE.
+% 
+% The FRMT format description can be a format number or a free form date format
+% string, as accepted by the datestr() MATLAB function. The FRMT and TIMEZONE
+% arguments are optional, if they are not specified or empty, the ones stored in
+% the toolbox user preferences are used.
+%
+% EXAMPLES:
+% 
+%    >> msec = time.now();
+%    >> str = time.strftime(msec);
+%    >> str = time.strftime(msec, 'yyyy-mm-dd HH:MM:SS.FFF z');
+%    >> str = time.strftime(msec, 'yyyy-mm-dd HH:MM:SS.FFF z', 'UTC');
+%
+% SEE ALSO: datestr
+% 
+% VERSION: $Id: strftime.m,v 1.2 2011/03/24 14:49:37 mauro Exp $
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function str = strftime(msec, frmt, timezone)
+
+  % check input arguments
+  error(nargchk(1, 3, nargin, 'struct'));
+
+  % second and third arguments are optional
+  if nargin < 3
+    timezone = '';
+  end
+  if nargin < 2
+    frmt = '';
+  end
+  
+  % In the case of NaN, just set the output to 'NaN'
+  if isnan(msec)
+    str = 'NaN';
+    return
+  end
+
+  % check timezone
+  if isempty(timezone)
+    timezone = time.timezone;
+  end
+  % convert string timezone into java object 
+  if ischar(timezone)
+    timezone = java.util.TimeZone.getTimeZone(timezone);
+  end
+
+  % check frmt
+  if isempty(frmt)
+    frmt = time.timeformat;
+  end  
+  % convert matlab time formatting specification string into a java one
+  frmt = time.matfrmt2javafrmt(frmt);
+  
+  % format
+  tformat = java.text.SimpleDateFormat(frmt);
+  tformat.setTimeZone(timezone);
+  str = char(tformat.format(msec));
+  
+end
+