MATLAB中将日期时间转换为字符串的函数是datestr,但并不支持你的这种格式。
比较接近的是格式30(ISO 8601),不过多了一个字符“T”,可以给替换掉:
>> year=2012;month=1;day=1;hour=3;min=6;sec=1;>> strrep(datestr(datenum(year,month,day,hour,min,sec),30),'T','')
ans =
20120101030601
当然,也可以直接用sprintf函数来写:
>> sprintf('%i%02i%02i%02i%02i%02i',year,month,day,hour,min,sec)ans =
20120101030601a={'3:39:20'}
xlswrite('axls',a)
如果你要写到其他数据表的某个单元格可以这样:
a={'3:39:20'}
xlswrite('axls',a,'sheet2','A2')
你这个就是个时间转换问题。读取的时候自己进行了时间转换,你再转换回去就行了。
[~,~,result]=xlsread('axls','Sheet1','A1');
xtimestr
=
datestr(result,'HH:MM:SS')
你看看结果是不是一样的(哦,多了个0~):这个问题的正确答案是
参数里面的'Format',应该是'InputFormat',前者是用来输出时间的格式,后者才是读取的格式
除此之外还有两个问题,
一是小时数应该用12小时制1位或2位
不是HH而是h
二是
如果matlab如果是中文版或者系统是中文系统,那么可能解析AM会报错
需要指定地区为en_US
综上所述改成这样就能跑通了
tt = datetime(t,'InputFormat','dd/MM/yyyy h:mm:ssSSS a','Locale','en_US');clear;clc;clf;
xlim([-15,15]);axis equal;axis off;hold on
%外框
rectangle('Position',[-14,-6,28,12],'Curvature',[08,04],'LineWidth',2,'facecolor','g')
rectangle('Position',[-13,-5,26,10],'Curvature',[08,04],'LineWidth',2,'facecolor',[8,8,8])
rectangle('Position',[-45,1,5,5],'facecolor','k');
rectangle('Position',[-45,-1,5,5],'facecolor','k');
rectangle('Position',[4,1,5,5],'facecolor','k');
rectangle('Position',[4,-1,5,5],'facecolor','k');
%液晶格子
X=[0 -3 -3 0 3 3 0]';Y=[8 5 -5 -8 -5 5 8]';
x=[Y,X+1,Y,X-1,X+1,Y,X-1];
y=[X+2,Y+1,X,Y+1,Y-1,X-2,Y-1];
X=[x-10,x-7,x-15,x+15,x+7,x+10];
Y=[y,y,y,y,y,y];
h=[];
for i=1:42
h{i}=fill(X(:,i),Y(:,i),'k','edgecolor','none');
end
hold off
unshow={3,[1,3,4,6,7],[4,5],[4,7],[1,6,7],[2,7],2,[3,4,6,7],[],7};
%显示时间
try
while 1
for i=1:42
set(h{i},'visible','on');
end
time=clock;time=floor(time(4:6));
time=reshape([floor(time/10);mod(time,10)],1,[]);
for i=1:6
for j=unshow{time(i)+1}
set(h{j+(i-1)7},'visible','off');
end
end
pause(eps)
end
catch
endMatlab提供了一种通过步长转换成时间的方法,即利用datetime函数将步长转换成表示日期时间的格式。该函数接受步长作为输入,并将其转换成MATLAB中的表示日期时间的格式,从而实现将步长变成时间的功能。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)