阅读时间/日期从Excel

222(30天)
莎拉
莎拉 2012年1月3日
嘿,伙计们,
我有一个问题使用xlsread函数。我的excel电子表格,我给出了以下格式:日期
2010-11-9(2011年11月9日)
然而,当我用下面的代码:
(T1。团体,T1。测试器]= xlsread (2011 field.xls3,“A1: B42292”);
T1。TNum = datenum (T1.TStr);
T1。TVec = datevec (T1.TNum);
MATLAB读取我的日期以下列格式:
11/9/2010
然后,当我处理代码,我得到以下错误:
错误= = > readfield2011 10 T2。TNum = datenum (T2.TStr);%将日期字符串转换成数值格式
:造成的错误使用= = > dtstr2dtvecmx失败约会日期字符串转换成数字。
谁能帮助我了解这一点要做什么?我试过几件事,但我仍然得到同样的错误。
PS:在Excel中,如果我有约会在一个细胞(A1)和时间在另一个单元格(B1),有什么方法可以将两个细胞在一起,结合信息合并到一个细胞?谢谢你的所有帮助。

接受的答案

检波器博士
检波器博士 2012年1月3日
我尝试创建自己的XLS文件和日期信息和时间信息列列B:
11/9/2010 9:00:00
11/10/2010 10:00:00
11/11/2010 11:00:00
11/12/2010 12:00:00
11/13/2010 13:00:00
11/14/2010 14:00:00
11/15/2010 15:00:00
然后我试着阅读在这个信息:
(团体,测试器,生)= xlsread (“Book1.xls”,1A1: B7的);
然后我得到这个结果:
> >团体
Sig =
1.0 e + 04 *
4.0491 - 0.0000
4.0492 - 0.0000
4.0493 - 0.0000
4.0494 - 0.0001
4.0495 - 0.0001
4.0496 - 0.0001
4.0497 - 0.0001
> >测试器
测试器=
{}
> >生
生=
[40491][0.3750]
[40492][0.4167]
[40493][0.4583]
[40494][0.5000]
[40495][0.5417]
[40496][0.5833]
[40497][0.6250]
所以运行 datenum 测试器不工作。为什么你不能使用签名的日期信息吗?
看起来日期信息自12/30/1899天数,所以一个简单的修复为Matlab理解是:
> > DateTime =总和(Sig, 2)
DateTime =
1.0 e + 04 *
4.0491
4.0492
4.0493
4.0495
4.0496
4.0497
4.0498
> > datestr (DateTime + datenum (30 - 12月- 1899 '))
ans =
09 - 11月- 2010 09:00:00
10 - 11月- 2010 10:00:00
11 - 11月- 2010 11:00:00
11月12 - - 2010 12:00:00
13 - 11月- 2010 13:00:00
11月14 - - 2010 14:00:00
11月15 - - 2010 15:00:00
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年8月21日
将excel编号和通常有一个错误在1990年3月1日期开始。
datetime与“convertfrom”“excel”可以映射的日子

登录置评。

更多的答案(5)

肖恩·德Wolski
肖恩·德Wolski 2012年1月3日
储存在你的日期结构T怎么样?当我运行:
datenum (“11/9/2010”)
转换工作原理:
ans =
734451年
放置一个断点readfield2011看看T2的10号线。测试器。
更多的 复制你的数据:
一个= {
“11/9/2010”
“11/9/2010”
“11/9/2010”
“11/9/2010”
“11/9/2010”
“11/9/2010”
“11/9/2010”};
datenum (A)
% {
ans =
734451年
734451年
734451年
734451年
734451年
734451年
734451}
3评论
莎拉
莎拉 2012年1月3日
我只是不明白……我不知道为什么我的代码是表演。根据你告诉我,它不应该…

登录置评。


莎拉
莎拉 2012年1月3日
基于这个链接:
似乎能够使用datenum单元阵列的日期是不可用的。我认为如果我工作包括时间值,我也有。问题是,在一个完全不同的列值…这意味着我将其作为独立变量读入MATLAB……除非我把它们在Excel(这可能是困难的)或者我结合MATLAB中的数据……我认为这是更容易做。有什么建议吗?
3评论
沃尔特·罗伯森
沃尔特·罗伯森 2012年1月3日
解决方案显示了使用cellfun()来处理单元阵列的日期字符串。

登录置评。


莎拉
莎拉 2012年1月3日
有趣,Elige。看看这个,这是我的数据在excel中:
一个
2010-11-9
2010-11-9
2010-11-9
2010-11-9
2010-11-9
B
1:41:32点
1:45:13点
1:50:13点
1:55:13点
2:00:13点
当我使用:
(团体,测试器,生)= xlsread (2011 field.xls3,“A1: B42292”);
我在测试器获得实际的字符串值,不像你。对于团体,我得到以下值:
0.570509259259259
0.573067129629630
0.576539351851852
0.580011574074074
0.583483796296296
我假设这是最初的时间列B的excel电子表格。
我认为,此时如果我可以把Sig值(双格式)成字符串值,反映了原始时间值电子表格,我可以简单地添加团体+测试器得到最后结果。你认为这是可能的吗?
6个评论
检波器博士
检波器博士 2012年1月3日
什么……所以“2010-11-9”转化为“3/10/2011”?我想我只会转换的格式列A和B从日期/时间/定制/任何文本在Excel(会导致数字像上面我的帖子),然后读入数据像你一样(应该没有字符串信息),然后你可以和团体的列(如我上面做),然后添加价值datenum(30 - 12月- 1899)所以Matlab理解它,然后将该值存储为你的T1.TNum。也许?

登录置评。


莎拉
莎拉 2012年1月3日
是的我不知道3/10/2011。无论如何,我得到了它,直到datestr部分,然后我有更美丽的错误:
> > datestr (DateTime + datenum(30 - 12月- 1899 '))
? ? ?下标指标必须或者是真实的积极的整数或逻辑值。
错误在134月= = = > formatdate char(月(dtvector (:, 2)));
误差在33 S = = = > dateformverify char (formatdate ([y,密苏里州,d, h,分钟,S], dateformstr, islocal));
在198年代错误= = > datestr = dateformverify (dtnumber, dateformstr islocal);
2的评论
莎拉
莎拉 2012年1月3日
嘿Elige,我想我明白了!我仍然不知道为什么datestr不工作,但我用datevec验证出来好了。我只是画我的数据相比,我现在的日期和验证就可以肯定的是…但是到目前为止很好:)谢谢你所有的帮助。感谢你的休息!

登录置评。


罗伯特·威尔士
罗伯特·威尔士 2020年8月21日
日期是阅读和报告为天1900-01-01,与1900-01-01 1。你可以通过创建一个电子表格与1900/01/01 xlsread将阅读作为一个数字1。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!