gpt4 book ai didi

javascript - 删除日期格式的尾随字符串

转载 作者:行者123 更新时间:2023-11-30 09:40:19 26 4
gpt4 key购买 nike

我正在使用 Moment Duration Format它很棒。在某些情况下,我无法获得正确的字符串格式。

下面是我当前的字符串输出类型

var dur = moment.duration(d, "minutes").format("h [hrs] m [min]");
  1. 45 分钟
  2. 1 小时 30 分钟
  3. 2 小时 0 分钟

这些都是正确的输出,我只是希望能够更改最终类型。

当小时数存在且分钟数为时,我想 trim 字符串以仅显示小时数

所以

2 小时 0 分钟 变成 2 小时

我不确定从哪里开始使用正则表达式?我认为这可能是完成它的唯一方法?

感谢您的帮助

最佳答案

不使用正则表达式,而是使用包装函数来检查对象是否具有值,如果没有,则更新格式字符串。

function getFormattedString(duration) {
var format = "";
if (duration.hours()) format += "h [hrs] ";
if (duration.minutes()) format += "m [min] "
if (duration.seconds()) format += "s [sec] ";
return duration.format(format)
}

console.log(getFormattedString(moment.duration(20, "minutes")))
console.log(getFormattedString(moment.duration(100, "minutes")))
console.log(getFormattedString(moment.duration(120, "minutes")))
console.log(getFormattedString(moment.duration(3701, "seconds")))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>


更新代码(通用包装器)

  • 添加了yeardays 等选项
  • 添加了一个静态 Map 使代码通用
  • 添加了对 1 秒10 秒 的处理。

function getFormattedDurationString(value, unit) {
const valueMap = [
{name:'years', value:'y', unitValue:'yr'},
{name:'days', value:'d', unitValue:'day'},
{name:'hours', value:'h', unitValue:'hr'},
{name:'minutes', value:'m', unitValue:'min'},
{name:'seconds', value:'s', unitValue:'sec'},
{name:'milliseconds', value:'s', unitValue:'ms', bypassPlural: true},
]

var duration = moment.duration(value, unit);
var format = valueMap.reduce(function(p,c){
var val = duration[c.name]();
if(val >0){
p += c.value + " [" + c.unitValue + (val > 1 && !c.bypassPlural ? "s":"") + "] ";
}
return p
}, "")
return duration.format(format)
}

console.log(getFormattedDurationString(20, "minutes"))
console.log(getFormattedDurationString(100, "minutes"))
console.log(getFormattedDurationString(120, "minutes"))
console.log(getFormattedDurationString(3701, "seconds"))
console.log(getFormattedDurationString(3701, "days"))
console.log(getFormattedDurationString(3701, "milliseconds"))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>

关于javascript - 删除日期格式的尾随字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41427474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com