2017-04-25 166 views
2

我正在使用jira rest api來解決問題。估計的時間會以秒爲單位返回 - 但是基於每週5天,每天8個小時。將工作秒數轉換爲周,天,小時和分鐘

如此,例如,1d的估計時間被返回28800秒

我有這個代碼,我想要做什麼,但它的氣味,我想知道如果有一個更好的功能做我想

let es = 246180; // time (number of *work* seconds) is "1w 3d 4h 23m" 
let sInMin = 60; 
let sInHour = (60 * 60); 
let sInDay = (sInHour * 8); 
let sInWeek = (sInDay * 5); 

let w = Math.trunc(es/sInWeek); 
let d = Math.trunc((es - (w * sInWeek))/sInDay); 
let h = Math.trunc((es - (w * sInWeek) - (d * sInDay))/sInHour); 
let m = Math.trunc((es - (w * sInWeek) - (d * sInDay) - (h * sInHour))/sInMin); 

console.log(w,d,h,m) // 1 3 4 23 

如果我添加momentmoment-duration-format進來,然後我就可以做

moment.duration({w,d,h,m}).format("w[w] d[d] h[h] m[m]") 

去神奇1w 3d 4h 23m字符串

我該如何改進呢?

回答

1

JIRA REST API已經爲您提供了正在嘗試計算的字段。

從樣本響應他們的文檔here

"timetracking": { 
    "originalEstimate": "10m", 
    "remainingEstimate": "3m", 
    "timeSpent": "6m", 
    "originalEstimateSeconds": 600, 
    "remainingEstimateSeconds": 200, 
    "timeSpentSeconds": 400 
    } 

你抓住了originalEstimateSeconds領域,並試圖做數學得到的字符串,但字符串在originalEstimate領域脫穎而出,你已經取得。不需要計算它。

+0

嗯,這有點糟糕,因爲我必須使用搜索api來獲取問題(由externalId搜索),並且* api似乎不會返回時間跟蹤,只是實際的秒數值。 jira api是如此*血腥*不一致,它讓我生氣;( 感謝您的單挑 – jmls

+0

你打了哪個特定的api,你在哪裏得到顯示你在幾秒鐘內的估計的領域?在請求的'fields'參數中請求?如果是這樣,也許有一個不同的字段將值顯示爲字符串?只是基於文檔進行推測。 –

相關問題