如何将datetime()值显示为毫秒

时间:2016-09-02 07:06:09

标签: matlab

我有两个问题:

  1. 在下面的MATLAB代码x中,格式为“datetime(Y,M,D,H,MI,S,MS)”的日期时间值。 display(x)命令显示'00:00:00'。然而'if条件'显示'收到好评!'这意味着x的实际值大于0而不是display(x)命令显示的'00:00:00'。请建议我如何显示x的完整值,最高可达毫秒或微秒。
  2. 如何将'0000,00,00,00,00,00,200'保存为日期时间值?
  3. send = datetime(2016,08,31,06,01,00,00);
    receive=datetime(2016,08,31,06,01,00,100);
    x=receive-send;
    display(x);
       if (x>0)
           disp('Well received!')
       else
           disp('Late!')
       end
    

2 个答案:

答案 0 :(得分:1)

您的第一个问题的解决方案是,您可以将datetime-variable转换为格式化字符串:

disp(datestr(x,'HH:MM:SS:FFF'));

这为您提供输出00:00:00:100,因为F是毫秒的符号标识符。

此外,似乎datetime不支持毫秒。在这种情况下,您应该使用MATLAB序列号:

http://de.mathworks.com/help/matlab/ref/datenum.html

答案 1 :(得分:0)

示例中创建的变量xduration对象。您可以通过设置Format属性来指定毫秒的显示(以及较小的秒数小数)。

>> x.Format = 'hh:mm:ss.SSS';
>> display(x);

   x = 00:00:00.100

当您询问将'0000,00,00,00,00,00,200'保存为日期时间值时,这可能也是您想要的。它不是真正的日期和时间,而是持续时间,可以使用duration构造函数创建。

>> duration(00,00,00,200,'Format','hh:mm:ss.SSS')

ans = 

   00:00:00.200

作用于这些duration对象的大多数操作都会按预期工作,例如与>运算符进行比较:

>> x > duration(00,00,00,200)

ans =

     0