2016-01-13 208 views
0

我有一個非常可怕的時間試圖將8601轉換爲可讀格式。日期顯示爲'P0DT0H0M10S'並存儲在一個名爲timeLeft的變量中。我在網上找到的每篇文章都告訴我如何將日期轉換爲8601格式,但不是相反。8601 ISO字符串到Javascript中的可讀日期格式

我嘗試過使用moment.js,但似乎圍繞當前日期而不是一個由我的timeLeft var設置。我如何將這個var變成用戶友好的格式?謝謝

+0

這串並不像ISO 8601的格式。該格式涉及類似「2010-01-01T05:06:07」的日期。 – Pointy

+2

它是[持續時間格式](https://en.wikipedia.org/wiki/ISO_8601#Durations)... – epascarello

+0

@epascarello啊好的。那麼在這種情況下,我不確定將時間段轉換爲Date實例的意義。我想你可以得到一個日期相對於其他日期偏移的持續時間,我想這可能是OP所談論的。 – Pointy

回答

0

首先,這不是一個ISO-8601 date(甚至沒有關閉)。

二,momentjs does support parsing一個字符串變成了一個片刻,用moment("20111031", "YYYYMMDD")語法(從它們的front page examples)。

我不確定你需要什麼樣的模式,但可能像[P]D[DT]H[H]M[M]S[S]

+2

也許向下滾動一下:https://en.wikipedia.org/wiki/ISO_8601#Durations – epascarello

+0

@epascarello好的。我打算調用語義,並說他們仍然不是日期,因此。時刻仍然應該能夠解析它們,並且可以在與當前或其他日期結合時做一些有意義的事情。 – ssube

1

時刻有duration type

var duration = moment.duration('P1Y2M3DT4H5M6S'); 
 
// user-friendly format 
 
var out = duration.humanize(); 
 

 
snippet.log(out);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.1/moment.min.js"></script> 
 
<script src="https://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

相關問題