Moment.js格式为日:时:分:秒。

问题描述 投票:0回答:1

我的任务是做一个输入,让用户可以在一个字段中输入天数和hh:mm:ss,如dd:hh:mm:ss,但通过Moment.js文档,这样的格式似乎并不存在。有没有办法让我自己做一个变通的方法?

更新。

我找到了一种方法,可以用duration来精确地按照我的要求格式化字符串。moment.duration( days + '.' + hours + ':' + minutes + ':' + sec).format('dd HH:mm:ss')); (这很丑陋,但我可以稍后修复这部分,重要的是它能用)。

我使用duration:创建了要在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"');但有没有一种更优雅的方式来设置输入格式属性?我不想使用 yy 来设置我的日期值。

javascript momentjs
1个回答
1
投票

你可以操纵moment.js提供的标记来显示你想要的时间和日期,比如你的案例。

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

我已经链接了文档中的显示部分,你也可以在那里找到更多的方法。更多信息在这里


0
投票

你需要处理天'手动'。

在输入被改变后。

  1. 去掉这几天
  2. 创建具有所需时间的 momentjs 对象
  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>

提供您的自定义格式作为第二个参数(格式化)来创建一个 momentjs 基于用户格式的对象。momentjs 字符串 + 格式;

© www.soinside.com 2019 - 2024. All rights reserved.