簡體   English   中英

天:小時:分鍾:秒的 Moment.js 格式

[英]Moment.js format for Days:Hours:Minutes:Seconds

我的任務是進行輸入,用戶可以在一個字段中輸入天數和 hh:mm:ss 作為 dd:hh:mm:ss,但是通過 Moment.js 文檔似乎不存在這種格式. 有沒有辦法讓我自己解決?

更新:

我找到了一種使用持續時間精確格式化字符串的方法: moment.duration( days + '.' + hours + ':' + minutes + ':' + sec).format('dd HH:mm:ss')); (這很丑,但我可以稍后修復這部分,重要的是它有效)。

我使用以下方法創建了要在 html 中顯示的元素:

const input = document.createElement('input'); input.setAttribute('data-inputmask', '"alias": "datetime", "placeholder": "_", "inputFormat": "dd HH:MM:ss"'); input.value = value;

這會產生一個如下所示的輸入值: 01 00:00:00 ,但是當我嘗試擦除日期字段( 01 )時,它會循環回到上個月的最后一天。

例子

我需要結果為__ 00:00:00_是字段中空值的占位符),或者我需要刪除日期為01時擦除該字段的功能

更新 2:

看來我可以通過使用input.setAttribute('data-inputmask', '"alias": "datetime", "placeholder": "_", "inputFormat": "yy HH:MM:ss"'); ,但是有沒有更優雅的方法來設置 inputFormat 屬性? 我不想使用yy來設置我的日值。

您可以操縱 moment.js 提供的令牌以根據您的情況顯示時間和日期:

moment().format("dddd, h:mm:ss");

我已經鏈接了文檔的顯示部分,您也可以在那里找到更多方法。 更多信息在這里

您需要處理“手動”的日子;

輸入改變后;

  1. 刪除天數
  2. 使用所需時間創建 momentjs object
  3. 將天數添加到輸入中.add(n, 'days')

 // 12 days from now @ 13:30:00 console.log(format('12:13:30:00')); // 120 days from now @ 12:11:11 console.log(format('120:12:11:11')); // -1 days (yesterday) @ 10:00:00 console.log(format('-1:10:00:00')); function format(input) { // Get number of days let days = input.substr(0, input.indexOf(':')); // Create momentjs let mom = new moment(input.replace(days, ''), 'HH:mm:SS') // Add days mom.add(days, 'days'); // Return human readable return mom.format('lll'); }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

提供您的自定義格式作為第二個參數 ( format ) 以根據您的用戶格式創建一個momentjs object。 momentjs 字符串 + 格式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM