首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日期字符串到日期

日期字符串到日期
EN

Stack Overflow用户
提问于 2016-09-10 05:20:21
回答 1查看 62关注 0票数 1

我对Matlab相当陌生,因此在导入数据方面存在一些问题。

我想输入GDP数据,然后按时间绘制。我能够导入它并将其转换为字符串日期。现在我想把它转换回我的目标矩阵。但是,我只看到目标矩阵中的值48或49。

我的代码如下:

代码语言:javascript
复制
    AUSGDP = zeros(228,2);
    GDP = xlsread('AUDGDP.xlsx');
    GDP = GDP(1:228,1) + 693960;
    datestring = datestr(GDP,'mm/yyyy');
    AUSGDP(228,1) = datestring(228,1)

数据(就在xlsread('AUDGDP.xlsx')之后)看起来有点像这样:

代码语言:javascript
复制
Date  | % Change
------|---------
21794 | 0
21885 | 1.300000
21976 | 1.500000
22068 | 1.400000
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-10 21:57:41

获得48或49的原因是,datestring(228,1)返回字符串中第一个字符的值。

'09/2016‘的第一个字符是'0','0’值是48 (在ASCII中)。

示例:

s = '09/2016'

s(1)等于'0‘。

转换为double:double(s(1))等于48。

我想你是想把这个月当作数字(而不是字符串)。

一种方法是获得第一个两个字符,并将字符串转换为双(数字):

s = '09/2016'

month_str = s(1:2); % month_str = '09'

month_num = str2num(month_str) %Convert string to number.

不用使用datestr函数,您可以使用datevec

datevec将日期和时间转换为组件的向量(所有组件都是数字,而不是字符串)。

datevec('09/2016', 'mm/yyyy')

返回:2016 9 1 0 0 0

如果您只需要一个月,您可以使用:

[~, m, ~, ~, ~, ~] = datevec('09/2016', 'mm/yyyy')

结果是m = 9

在您的代码中,您可以使用它如下:

代码语言:javascript
复制
AUSGDP = zeros(228,2);
GDP = xlsread('AUDGDP.xlsx');
GDP = GDP(1:228,1) + 693960;
datestring = datestr(GDP,'mm/yyyy');
%AUSGDP(228,1) = datestring(228,1)
[~, m, ~, ~, ~, ~] = datevec(datestring, 'mm/yyyy'); %m is months column as numbers.
AUSGDP(228,1) = m;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39422864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档