【问题标题】:matlab omiting milliseconds from datenummatlab从datenum中省略毫秒
【发布时间】:2017-08-09 18:56:49
【问题描述】:

x=7.369030000162731e+05

x 是一个 matlab 日期,它等于

27.07.2017 00:00:01.406

我想从中删除毫秒(即 .406)

为此,我将其转换为 datestr 格式为 'dd.mm.yyyy HH:MM:SS' 然后再次到 datenum

datenum(datestr(x,'dd.mm.yyyy HH:MM:SS'))

有没有更简单的方法来做到这一点。

【问题讨论】:

  • 对于它的价值,您无法准确地将您的方法与下面的答案进行比较,因为这里有一个细微的错误(至少对于我的语言环境而言)。您的日期格式字符串与 datenum 的预期不同,结果更改为从 2017 年 7 月 27 日到 2017 年 1 月 1 日(对我而言)。解决此问题的一种方法是将格式字符串作为第二个参数显式传递给datenum,如下所示:datenum(datestr(x,'dd.mm.yyyy HH:MM:SS'),'dd.mm.yyyy HH:MM:SS'))

标签: matlab


【解决方案1】:

这是一种更简单的方法,将x 转换为date vectorfloors 所有元素(仅影响索引6 中的秒值),然后将其转换回serial date number

x = datenum(floor(datevec(x)));

【讨论】:

  • 我总是忘记datevec,还没有足够的用例来流利地处理日期。恭喜你获得了 100k,只需要一个简单的日期格式问题即可将您推倒;)
【解决方案2】:

如果您想要手动方法:

y = floor(x*86400)/86400;

因为serial date numbers 以天为单位,而86400 是一天中的秒数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多