【问题标题】:How to display datetime() value up to milliseconds如何将 datetime() 值显示为毫秒
【发布时间】:2016-09-17 00:47:50
【问题描述】:

我有两个问题:

  1. 在以下 MATLAB 代码中,x 是格式为“datetime(Y,M,D,H,MI,S,MS)”的日期时间值。 display(x) 命令显示“00:00:00”。然而,“如果条件”显示“好评!”这意味着 x 的实际值大于 0,而不是 display(x) 命令显示的“00:00:00”。请建议我如何将x 的完整值显示为毫秒或微秒。
  2. 如何将 '0000,00,00,00,00,00,200' 保存为日期时间值?
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

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您的第一个问题的解决方案是,您可以将日期时间变量转换为格式化字符串:

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

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

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

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

    【讨论】:

    • datetime 肯定支持毫秒,尽管自 R2015b 以来仅被接受为单独的参数。问题中的示例在旧版本的 MATLAB 中产生错误,但仍可以通过指定 0.1 秒而不是 00 秒和 100 毫秒来实现。
    • @bushmills...感谢您的回答...感谢。
    【解决方案2】:

    在您的示例中创建的变量x 是一个duration 对象。您可以通过设置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
    

    【讨论】:

      猜你喜欢
      • 2013-03-17
      • 2022-01-17
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 2014-12-07
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多