Time 从持续时间中获取秒数
我正在寻找一些关于从文本中获取秒数的帮助 这是我在libreoffice calc A列中的内容:Time 从持续时间中获取秒数,time,libreoffice,duration,calc,Time,Libreoffice,Duration,Calc,我正在寻找一些关于从文本中获取秒数的帮助 这是我在libreoffice calc A列中的内容: A1:35天21小时56分钟 A2:3天0小时54分钟 A3:1天3小时0分钟 A4:5小时26分钟 A5:32分钟 A6:0秒 我正在寻找一个解决方案(我对libreofficebasic不太熟悉)来从列B中的持续时间中获得秒数。问题在于解析列(这是作为文本计算的,在数据中格式化仍然不起作用)。我不知道如何拆分单元格以获得例如:35*86400+21*3600+56*60for cellA1
- A1:35天21小时56分钟
- A2:3天0小时54分钟
- A3:1天3小时0分钟
- A4:5小时26分钟
- A5:32分钟
- A6:0秒
35*86400+21*3600+56*60
for cellA1
我尝试使用libreoffice工具进行拆分,但如果A列中没有天数,则会生成例如:
5(小时)*86400
,等等。。对于cellA4
您没有提到您的首选语言,我可以向您展示一个PHP示例。目标是只在字符串中留下数字,然后计算总和。我不知道字符串的所有可能变体,但此代码适用于您的输入
$durations = array(
'35 days 21 hours 56 minutes',
'3 days 0 hours 54 minutes',
'1 days 3 hours 0 minutes',
'5 hours 26 minutes',
'32 minutes',
'0 second'
);
$constants = array(60, 3600, 86400);
$durationsTime = array();
foreach ($durations as $duration) {
$numbers = preg_replace('/[^0-9\s]/i', '', $duration);
$values = explode(' ', $numbers);
$time = 0;
if (count($values) > 1) {
foreach ($values as $key => $value) {
$time += $value * $constants[count($values) - $key - 1];
}
} else {
$time = strpos($duration, 'second') !== false ? intval($values[0]) : $values[0] * $constants[0];
}
$durationsTime[] = $time;
}
var_dump($durationsTime);die();
Starbasic与libreoffice API:
function GETSECONDS(s1 as string) as long
oFuncAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
s1 = oFuncAccess.callFunction("SUBSTITUTE", array(s1, "days", "*24*60*60+"))
s1 = oFuncAccess.callFunction("SUBSTITUTE", array(s1, "hours", "*60*60+"))
s1 = oFuncAccess.callFunction("SUBSTITUTE", array(s1, "minutes", "*60+"))
s1 = oFuncAccess.callFunction("SUBSTITUTE", array(s1, "seconds", "*1+"))
s1 = left(s1, len(s1)-1)
lRes = 0
sAdd = split(s1, "+")
for i = lbound(sAdd) to ubound(sAdd)
sMult = split(sAdd(i),"*")
lResMult = 1
for j = lbound(sMult) to ubound(sMult)
lResMult = lResMult * val(sMult(j))
next
lRes = lRes + lResMult
next
getSeconds = lRes
end function
用作自定义项,如:=GETSECONDS(A1)
时间测量单位必须为复数形式
问候
阿克塞尔事实上,我想知道是否有一种方法可以通过libreoffice来实现。但如果我必须在Basic中构建它,我会保留它。谢谢你的帮助,效果很好!我没有想过用乘法代替我的课文。非常感谢你