我要求提供错误格式的持续时间(即1:13:12)。当我尝试在Postgres数据库中插入时,它显示了预期的DateTimeParseError。
我们可以在实际的持续时间格式中改变这个(1:13:12)类型的持续时间,例如服务器端的这个(01:13:12)HH:MM:SS吗?
是的,这是可能的。
方法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);
}