以这种格式存储的绝对时间:
time = "000:03:07.447"
如何以优雅的方式将此字符串转换为秒?
更新
正如Harper89所建议的
3600*#1 + 60*#2 + #3 & @@ ToExpression[StringSplit["000:00:04.424", ":"]]
Szabolcs建议使用AbsoluteTime 来自Mathematica帮助:AbsoluteTime给出了自你的时区1900年1月1日开始以来的总秒数。
AbsoluteTime[{"000:03:07.447", {"Hour", ":", "Minute", ":", "Second",
".", "Millisecond"}}]
- AbsoluteTime[{"000:00:00.000", {"Hour", ":", "Minute", ":", "Second",
".", "Millisecond"}}]
这两个都适用
答案 0 :(得分:4)
解析字符串以在每个之间形成一个数组:使用split()
换句话说
totalseconds = array(0)*3600 + array(1)*60 + array(2)
或者在vb.net代码中
Dim time As String = "000:3:7"
Dim a() As String
a = longstring.Split(":")
Dim TotalSeconds as Integer = (a(0) * 86400) + (a(1) * 3600) + a(2))
Trace.WriteLine(TotalSeconds.toString)
来自mathmatica的标签定义
不要与数学(数学)混淆。
OOPS ..
答案 1 :(得分:4)
正如harper89所述,在 Mathematica :
中FromDigits[ToExpression /@ StringSplit[time, ":"], 60]
答案 2 :(得分:3)
尝试以下方法:
AbsoluteTime[{"000:03:07.447",
{"Hour", ":", "Minute", ":", "Second", ".", "Millisecond"}}]
(* ==> 187.447 *)
关键是提供明确的日期格式(请参阅DateList[]
)的文档
此解决方案适用于Mathematica 8.似乎在版本7(也可能在版本6中)需要更正结果,如下所示:
AbsoluteTime[{"000:03:07.447",
{"Hour", ":", "Minute", ":", "Second", ".", "Millisecond"}}] -
AbsoluteTime[{"0", {"Hour"}}]