如何将传入changeValue的数字日期转为2/05/2024或02/05/2024格式?
数字日期转指定格式的解决方案
有两种可行的处理方式,分别在VB层或JS层完成格式转换:
方式一:在VB端提前处理日期格式
直接在VB中把数字拆解并格式化为目标字符串,再传递给JS,这样JS函数可以直接赋值,更简单直观:
假设MyDate是存储数字日期的变量(如2052024),VB代码示例:
Dim rawDate As Integer = 2052024 Dim dateStr As String = rawDate.ToString() ' 拆分日、月、年:最后4位是年,中间2位是月,剩余部分是日 Dim year As String = dateStr.Substring(dateStr.Length - 4) Dim month As String = dateStr.Substring(dateStr.Length - 6, 2) Dim day As String = dateStr.Substring(0, dateStr.Length - 6) ' 生成带前导零的格式(02/05/2024) MyDate = String.Format("{0:00}/{1}/{2}", day, month, year) ' 或者生成不带前导零的格式(2/05/2024) ' MyDate = String.Format("{0}/{1}/{2}", day, month, year)
修改页面中的点击事件,给传入的值加上引号(因为现在是字符串):
<img onclick="changeValue('<%=MyDate%>')" src="your-image-path" />
JS函数无需修改,保持原代码即可:
function changeValue(o){ document.getElementsByName('ReceiptDate')[0].value = o; }
方式二:在JS函数中处理数字格式
如果不想修改VB代码,直接在JS里接收数字并转换格式:
修改后的JS函数会自动拆分数字、补全前导零并格式化:
function changeValue(o) { // 将数字转为字符串,确保长度足够(不足时前面补零) const dateStr = o.toString().padStart(7, '0'); // 拆分年、月、日 const year = dateStr.slice(-4); const month = dateStr.slice(-6, -4); const day = dateStr.slice(0, dateStr.length - 6); // 生成带前导零的格式:02/05/2024 const formattedDate = `${day.padStart(2, '0')}/${month}/${year}`; // 若要不带前导零的格式,替换为下面这行 // const formattedDate = `${day}/${month}/${year}`; document.getElementsByName('ReceiptDate')[0].value = formattedDate; }
页面中的点击事件保持不变:
<img onclick="changeValue(<%=MyDate%>)" src="your-image-path" />
内容的提问来源于stack exchange,提问作者Dicey
相关产品推荐
相关产品推荐

