我有时间戳7.351173057570145e 05,应该代表'05 -Sep-2012 14:20:17' . 不幸的是,我不知道那是什么时间格式 .
如果我在Matlab中使用timestr(),我会得到'05 -Sep-2012 07:20:17' . 显然我的时间是7个小时(所有文件一致) . 我试图在时间戳上添加7 * 3600秒,因为我认为这是从1970年开始的几秒钟,但这是错误的 . 如果我减去时间,我会得到0.2915的差异 . 这意味着7小时表示为0.2915 . 我不明白这是如何工作的 .
-
这是什么时间格式?
-
有没有方法可以添加x小时?
-
有没有一种方法可以将其转换为unix时间(in-或不包括ms)?
谢谢你的帮助 .
3 回答
timestr的文档提到它期望
dateenum
返回的格式:dateenum返回自0000年1月0日以来的天数:
因此,如果你的偏移是7小时,差异应该是7/24,这确实是0.2917,正如L. Scott Johnson所建议的那样 .
从2014b开始,您可以使用datetime来操作日期时间:
您可以先将date number(表示时间作为从0000年1月0日开始的天数)转换为datetime对象,以使其更容易使用:
然后,您可以使用hours函数轻松修改它,像这样添加7个小时:
然后,您可以使用函数posixtime将其转换为UNIX time(即自00:00:00 1-Jan-1970 UTC(通用协调时间)起经过的秒数,包括小数秒,忽略闰秒):
NOTE: 您的时间戳与您的预期相差7小时的事实可能是时区问题,如a comment by Peter中所述 . 您可以通过在转换日期编号时将一些额外参数传递给
datetime
来解决此问题 . 具体来说,您应该查看'TimeZone'参数 .快速回答你的问题:
就像@gnovice指出的格式'datenum',这是自0-Jan-0000以来的天数
只需添加到您的号码x / 24
你可以将它转移到正常时间,然后再回到unix时间 .