我发现day
,month
和year
之类的功能需要Financial Toolbox
。
>> [~, packages] = matlab.codetools.requiredFilesAndProducts('month'); packages(2)
ans =
struct with fields:
Name: 'Financial Toolbox'
Version: '5.8'
ProductNumber: 30
Certain: 1
如何在没有此工具箱的情况下了解日期时间部分?
答案 0 :(得分:3)
您可以使用datestr
功能(不需要工具箱)。
例如,我现在使用'now'
创建datetime对象,然后进行处理:
dt = datetime( 'now' ); % datetime object: 27-Jun-2018 12:17:27
% Year
y = datestr( dt, 'yyyy' ); % >> y = '2018'
% Month
m = datestr( dt, 'mm' ); % >> m = '06'
m = datestr( dt, 'mmm' ); % >> m = 'Jun'
% Day
d = datestr( dt, 'dd' ); % >> d = '27'
d = datestr( dt, 'ddd' ); % >> d = 'Wed'
如果需要将年/月/日的数字输出转换为char数组中的数字,请使用str2double
。
例如,在month
的背景下,您可以看到(在进行健壮性检查之后)它仅使用datevec
的输出索引了一个月份名称数组,因此这将是另一个要走的路。
修改
我刚刚看到您可以直接访问datetime对象的year / month / day / ...属性。这使事情变得非常容易,尤其是在需要数字输出的情况下:
dt = datetime( 'now' ); % datetime object: 04-Mar-2019 11:20:00
y = dt.Year; % >> y = 2019
m = dt.Month; % >> m = 3
这仍然避免使用year
/ month
/ ...函数。
答案 1 :(得分:3)
我不认为我对问题或接受的解决方案的评论能达到我的预期目的,因此我将给出一个正确的答案,以更好地阐述您所看到的内容。
在MATLAB中有多个称为“月”的事物。财务工具箱(https://www.mathworks.com/help/finance/month.html)中有一个名为month的函数。 datetime
类的一种方法也称为“ month”(https://www.mathworks.com/help/matlab/ref/month.html)。这是两个单独的功能,作用不同。 (财务工具箱的)常规“月”功能将接受任何日期数字或字符串。但是,在MATLAB中,如果您调用“ month”并将其传递给日期时间的一个实例(如接受的解决方案的答案,则可以使用datetime('now')
),则不会调用Financial Toolbox的函数“ month”,而是datetime类的“月” 方法,因为这是MATLAB分配规则的工作方式。
matlab.codetools.requiredFilesAndProducts
不会并且不能知道您正在使用日期时间输入调用“月”,因此不能假定您正在调用名为“月”的日期时间方法而是向您报告“财务工具箱”功能的要求。
如果知道您正在使用日期时间,则可以在查询中更精确地查询requiredFilesAndProducts:
>> [~,packages] = matlab.codetools.requiredFilesAndProducts(which('month(datetime(''now''))'))
packages =
Name: 'MATLAB'
Version: '8.6'
ProductNumber: 1
Certain: 1
通过使用which('month(datetime(''now''))')
,可以更准确地告诉which
函数您的函数调用看起来是什么样(即,其输入类型是什么),从而使其能够正确运行确定哪个超载的“月”将被调用,然后requiredFilesAndProducts可以正确地向您显示,如果您输入的是日期时间,则只需要MATLAB,而不是Financial Toolbox。
如果您确实需要在非日期时间调用“月”,则可以通过编写自己的函数(将序列日期和格式放入日期时间,然后在日期时间调用“月”)来有效地获得相同的行为。对象(请参见https://www.mathworks.com/help/matlab/ref/datetime.html上的'ConvertFrom'语法)。这对Financial Toolbox没有任何要求,因为它将仅利用datetime方法(基本MATLAB中包含)。