javascript - 在服务器上获取“१:१३:१२”类型的持续时间。有什么办法可以将其更改为“01:13:12”?
问题描述
我收到的请求格式错误(即१:१३:१२)的持续时间。当我尝试插入 Postgres 数据库时,它显示的是预期的DateTimeParseError 。
我们可以在服务器端更改这种(१:१३:१२)类型的实际持续时间格式(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);
}
推荐阅读
- angular - 如何在angular5中测试Observable的ngrx store.select?
- stripe-payments - 使用 Webtask 进行条带化
- kotlin - ojAlog - Kotlin 中的 ConvexSolver:二维数组
- android - 在android的报警通道上播放声音
- firebase - GeoFire - 如何设置安全规则,使 geofire 位置只能写入 auth 用户?
- c++ - 如何将 opencv_contrib 添加到 CMake 项目?
- angular - 这个 Jasmine 测试是否正确测试了我的 http 请求?似乎不能让它失败
- android - Android Studio,使用 Google Drive(什么都不做)
- angularjs - JSONP 意外语法错误(API 不支持 JSONP)
- reactjs - 使用 React 使用键盘控制自定义列表组件