【问题标题】:convert into unix time format in matlab在matlab中转换为unix时间格式
【发布时间】:2013-07-01 16:36:17
【问题描述】:

我的时间戳值以纳秒为单位,例如 1126732882247990。我正在尝试转换为标准 utc 格式,但我无法转换它,因为 MATLAB 中用于标准 utc 转换的大多数函数仅限于微秒价值。

你们谁能帮我弄清楚 MATLAB 中的转换。

【问题讨论】:

  • 为什么使用 UTC 格式并保持纳秒级分辨率如此重要?为什么不把它分成两个变量,一个是整数秒(->UTC),另一个是剩下的纳秒分数?
  • 抱歉,Robocop,请您澄清一下您的观点。我没听懂

标签: matlab


【解决方案1】:

首先,您似乎并不相信纳秒。

日期1126732882247990可以分解如下:

1126732882247990 微秒

1126732882247 毫秒

1126732882 秒。

所以,如果您需要毫秒精度,这很简单:

  // keep only the milliseconds 
  long date = Long.parseLong("1126732882247990".substring(0,13));

2005-09-14 23:21:22.247

  // then apply whatever conversion you want
  DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
  df.setTimeZone(TimeZone.getTimeZone("France"));

2005-09-14 09:21:22.247

如果唯一的确定性是显示它,您还可以添加微秒:

 String timeStamp = df.format(dateObj).concat(".").concat("1126732882247990".substring(13,16));

2005-09-14 09:21:22.247.990

【讨论】:

  • 感谢 skoll,您的回复。我从我的 Android 选项卡重新编码了这些值,但我想从 matlab 脚本将其转换为 UTC。您获得的价值 (2005-09-14 23:21:22.247) 毫无说服力。我在 2014 年 5 月记录了这个数据。所以这个输出不是我所期望的。
  • @RockStar: 1126732882247990 以纳秒为单位,1126732882247 以微秒为单位,1126732882 以毫秒为单位。只需使用您可以在网上找到的带有正确输入(毫、微、纳米)之一的时间戳转换器,然后看看您会得到什么。
  • @Rockstar:确实,我已经为你测试了 1400000000 是 2014 秒而不是微秒,所以你的标题是错误的。你这里没有纳秒,你正在处理微秒。我更正了我的帖子。
  • 谢谢@skoll,你是完全正确的。但是,我的解释有点错误,从我的 android 选项卡的启动时间开始,我得到的值以纳秒为单位。这些不是 android 网站中未记录的纪元的时间戳值。因此,这些值表示从设备启动时间经过的纳秒数。我认为这是正确的。 developer.android.com/reference/android/hardware/…
  • 好吧,你只是运气不好,这个值可能是时间戳日期,而是意味着 13 天 :) 所以你只需要找到正确的日期来测试以查看格式
猜你喜欢
  • 2013-12-29
  • 2014-10-26
  • 1970-01-01
  • 2015-09-08
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
相关资源
最近更新 更多