如何使用jQuery/JavaScript从时间选择器获取时间并转换为MS-SQL time(7)格式
获取时间选择器值并转换为MS-SQL time(7)格式(原生JS + jQuery实现)
首先得明确MS-SQL的time(7)格式要求是 HH:mm:ss.fffffff——也就是24小时制的时:分:秒,再加上7位毫秒值。结合你提供的不带秒的时间选择器,我分别给你原生JS和jQuery的实现方案:
原生JavaScript实现
步骤1:获取时间选择器的输入值
先通过ID拿到你的时间输入框,取出用户选择的时间字符串:
const inTimeInput = document.getElementById('tpInTime'); const selectedTime = inTimeInput.value; // 示例输出:"14:30"
步骤2:转换为time(7)格式
因为你的选择器不带秒,我们可以补全秒为00,毫秒为0000000。如果之后你切换到带秒的选择器,也可以轻松调整逻辑:
function convertToSqlTime7(timeStr) { // 拆分时分,处理HH:mm格式的输入 const [hours, minutes] = timeStr.split(':'); // 拼接成符合要求的time(7)格式 return `${hours}:${minutes}:00.0000000`; } // 使用示例 const sqlFormattedTime = convertToSqlTime7(selectedTime); console.log(sqlFormattedTime); // 输出:"14:30:00.0000000"
如果你的时间选择器支持返回带秒的时间(比如HH:mm:ss),可以修改函数兼容两种格式:
function convertToSqlTime7(timeStr) { const timeParts = timeStr.split(':'); let hours = timeParts[0], minutes = timeParts[1], seconds = '00'; // 如果有秒的部分就用用户选择的,否则默认00 if (timeParts.length === 3) { seconds = timeParts[2]; } return `${hours}:${minutes}:${seconds}.0000000`; }
jQuery实现
jQuery的思路和原生JS一致,只是获取DOM元素的方式更简洁:
步骤1:获取时间选择器的值
const selectedTime = $('#tpInTime').val(); // 同样得到类似"14:30"的字符串
步骤2:转换格式
可以直接复用上面的转换函数,或者封装成jQuery方法(按需选择):
function convertToSqlTime7(timeStr) { const [hours, minutes] = timeStr.split(':'); return `${hours}:${minutes}:00.0000000`; } // 使用示例 const sqlFormattedTime = convertToSqlTime7($('#tpInTime').val());
进阶:利用时间选择器插件的API(如果用了第三方插件)
如果你用的是比如Bootstrap Timepicker这类插件,它自带获取时间对象的方法,能更精准地提取时分秒:
// jQuery版本 const timeObj = $('#tpInTime').timepicker('getTime'); // 格式化时分秒为两位数字 const hours = timeObj.getHours().toString().padStart(2, '0'); const minutes = timeObj.getMinutes().toString().padStart(2, '0'); const seconds = timeObj.getSeconds().toString().padStart(2, '0'); // 拼接成time(7)格式 const sqlFormattedTime = `${hours}:${minutes}:${seconds}.0000000`;
注意事项
- 记得处理输入为空的情况,避免
split方法报错,可以在转换函数开头加个判断:function convertToSqlTime7(timeStr) { if (!timeStr) return null; // 或者返回默认时间,比如"00:00:00.0000000" // ...后续逻辑 } - 如果需要更精确的毫秒值(比如选择器支持),可以从时间对象中获取毫秒数,再转换为7位:
const milliseconds = (timeObj.getMilliseconds() * 10000).toString().padStart(7, '0'); const sqlFormattedTime = `${hours}:${minutes}:${seconds}.${milliseconds}`;
内容的提问来源于stack exchange,提问作者t_rex
相关产品推荐
相关产品推荐

