我在Matlab中有一个表示日期的字符串,例如今天是20140703
。我需要做的是在日期执行简单的计算(加法和减法),最常用的函数是减去一周,从而得到结果20140626
。
在方案中,日期为20140710
,很容易减去7并得到结果(20140703
),但如果日期越过新的月份,那么问题就会因为不同而出现几个月的日子等等!
如何解决?
答案 0 :(得分:3)
使用格式字符串datestr
的{{1}}和datenum
转换数字(输入为字符串)并将其转换为代表天数的序列号。
'yyyymmdd'
如果输入日期>> DateNumber = datestr( datenum('20140703','yyyymmdd') - 7, 'yyyymmdd')
DateNumber =
20140626
是数字而非字符串,则可以使用20140703
轻松将其转换为字符串。
答案 1 :(得分:1)
标准的解决方法是使用unix_time [1],或者如果你将专门留在MATLAB中,那就是它自己的“MATLAB时间”。
为此,有些函数可以帮助您解析不同格式的字符串并将其转换为“MATLAB时间”。 [2]
Matlab时间只是一个双精度浮点数,表示自1月1日以来的天数(由于小数点,精度优于天数)。您可以在Matlab上执行常规算术运算,然后转换回您想要的格式。
编辑:请注意,如果考虑性能,您将遇到这些功能的问题,因为它们执行了大量检查以便能够处理各种输入格式。对于某些函数,您可以通过文件交换获得一些C源代码,当编译为mex时,它们的性能会更好。 [3]
[1] http://en.wikipedia.org/wiki/Unix_time
[2]请参阅datenum
和datestr
的文档
[3] http://www.mathworks.com/matlabcentral/fileexchange/28093-datestr2num