在服务器上获得“1:13:12”类型的持续时间。有没有办法把它改成“01:13:12”?

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

我要求提供错误格式的持续时间(即1:13:12)。当我尝试在Postgres数据库中插入时,它显示了预期的DateTimeParseError。

我们可以在实际的持续时间格式中改变这个(1:13:12)类型的持续时间,例如服务器端的这个(01:13:12)HH:MM:SS吗?

javascript node.js duration
1个回答
2
投票

是的,这是可能的。

方法1 - 短脏修复 - 计算您的数字字符集和拉丁数字符之间的差异并替换它们。然后填写缺少的“0” 请参阅下面的代码(它适用于您的示例,但我不对输入字符串进行任何验证,这取决于您)

var str = "१:१३:१२";

var offset = "१".charCodeAt(0) - "1".charCodeAt(0);

// replace everything but ":"
var result = str.replace(/[^:]/g, function(el){
  return String.fromCharCode(el.charCodeAt(0) - offset);
})

console.log(result);

result = result.split(":").map(el=>el.length === 2? el: "0" + el).join(":");
console.log(result);

方法2 - 建议 - 在创建持续时间字符串时使用语言环境,例如:如果您可以访问持续时间的Data对象,则可以使用Intl.DateTimeFormat并使用拉丁语编号系统获取字符串:"nu-latin"部分语言环境字符串。 注意:如果您使用某个库来创建持续时间,则可以通过某种方式设置区域设置

var date = new Date()

logLocaleDate("en-u-nu-deva-hc-h24")
logLocaleDate("en-u-nu-latin-hc-h24")

function logLocaleDate(locale){
  var res = (new Intl.DateTimeFormat(locale, {hour: "2-digit", minute: "2-digit", second:"2-digit"}).format(date))

  console.log(res);
}
© www.soinside.com 2019 - 2024. All rights reserved.