[英]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");
我已經鏈接了文檔的顯示部分,您也可以在那里找到更多方法。 更多信息在這里
您需要處理“手動”的日子;
輸入改變后;
.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.