禁止显示日期中不需要的空格



从其他地方读取代码,我有一个名为"time"的日期矩阵,其中包含我想要删除的不需要的空格。

我尝试过isspace和regexprep,但没有运气

time = regexprep(time, 'W', '');

我有大约 130000 个日期,格式如下:

04-July  -2017 09:54:30.000
04-July  -2017 09:54:31.000

等 在"七月"结束到我要抑制的下一个破折号之间有两个空格:

04-July-2017 09:54:30.000
04-July-2017 09:54:31.000

将两个或多个空格替换为任何内容:

>> time = {'04-July  -2017 09:54:30.000'
'04-July  -2017 09:54:31.000'}
>> regexprep(time,' {2,}','')
{'04-July-2017 09:54:30.000'}
{'04-July-2017 09:54:31.000'}

除非您只想更正输入文件以供以后使用,否则您不一定需要更正输入。有几种方法可以直接使用额外的空格解析时间:

让我们time

time = ['04-July  -2017 09:54:31.000';
'04-July  -2017 09:54:32.000']

然后,要将日期时间的字符串表示形式直接解析为 MATLAB 日期序列号,您可以使用:

%% get date in [MATLAB date serial number]
formatIn  = 'dd-mmm  -yyyy HH:MM:SS.FFF' ;
matlabTime = datenum(time,formatIn)
matlabTime =
736880.412858796
736880.41287037

这种串行时间表示不是那么人类可读,但如果你想用日期/时间进行计算,它是你能得到的最快的东西。

如果您的目标只是更正字符串,那么您可以使用相同的技巧来读取值,并准确定义您想要输出的输出格式:

%% get date in [string]
formatIn  = 'dd-mmm  -yyyy HH:MM:SS.FFF' ;
formatOut = 'dd-mmm-yyyy HH:MM:SS.FFF' ;
stringTime = datestr(datenum(time,formatIn),formatOut)
stringTime =
04-Jul-2017 09:54:31.000
04-Jul-2017 09:54:32.000

如果要使用新的datetime对象,输入格式的语法略有不同,但操作大致相同:

%% get date in [datetime] objects
formatIn  = 'dd-MMM  -yyyy HH:mm:ss.SSS' ;
t = datetime(time,'InputFormat',formatIn)
t = 
04-Jul-2017 09:54:31
04-Jul-2017 09:54:32

尽管 MATLAB 控制台以人类可读的格式显示t,但t现在是一个日期时间对象。如果要使用它,请查看文档。

一个月后和破折号前面只替换两个空格 (-(:

>> date = '04-July  -2017 09:54:30.000';
>> regexprep(date, '(w)  -', '$1-')
ans =
'04-July-2017 09:54:30.000'

最新更新