商城首页欢迎来到中国正版软件门户

您的位置:首页 >ASP中实现字符部位类似.NET里String对象的PadLeft和PadRight函数

ASP中实现字符部位类似.NET里String对象的PadLeft和PadRight函数

  发布于2026-05-03 阅读(0)

扫一扫,手机访问

论坛又见日期格式化需求:从“补位”函数到万能时间工具

技术论坛里总有些经典问题反复浮现,最近又看到有人在问:怎么把日期规整地格式化成“2004-08-09 05:02:20”这样的样式?这话题一出来,就知道又到了“字符串补位”函数登场的时候了。本质上,我们要实现的就是类似.NET里String对象PadLeft和PadRight的功能,让数字位数不足时,能自动在左侧或右侧补上指定的字符(比如补零)。

先来看一个最直接的左侧补位函数实现:

Function PadLeft(Value, Length, sChar)
  Dim strText, I
  strText = String(Length, sChar)
  strText = strText & Value
  LeftPad = Right(strText, Length)
End Function

它的逻辑非常清晰:先构造一个由补位字符(如“0”)填满的目标长度字符串,然后把原值拼在后面,最后从右截取目标长度。这样一来,如果原值长度不够,前面自然就被补位字符填充了。

那么右侧补位呢?其实原理相通,只需稍作调整:

Function PadRight(Value, Length, sChar)
  Dim strText, I
  strText = String(Length, sChar)
  strText = Value & strText
  LeftPad = Left(strText, Length)
End Function

看,只是拼接顺序和截取方向变了。有了这两个小工具,处理日期时间里的单位数字就轻松了。一个典型的应用示例如下:

AA = year(now) & “-” & PadLeft(month(now),2,“0”) & “-” & PadLeft(Day(now),2,“0”) & ” ” & PadLeft(Hour(now),2,“0”) & “:” & PadLeft(Minute(now),2,“0”) & “:” & PadLeft(Second(now),2,“0”)

这段代码能确保月、日、时、分、秒都是两位显示,最终生成我们熟悉的“YYYY-MM-DD HH:MM:SS”格式。

万能时间补位代码

当然,每次都手动调用补位函数拼凑日期略显繁琐。在实际开发中,更常见的做法是封装一个功能更全面的格式化函数。下面这段“万能”代码,可以说是一个经典范例:

Public Function ForMatDate(DateAndTime, Para) ‘格式化日期(日期时间,格式)
 Dim Y, M, D, H, F, S
 IF Not ISNumeric(Para) Or Not ISDate(DateAndTime) Then Exit Function
 Y = CStr(Year(DateAndTime))
 M = CStr(Month(DateAndTime)):IF Len(M) = 1 Then M = “0” & M
 D = CStr(Day(DateAndTime)):IF Len(D) = 1 Then D = “0” & D
 H = CStr(Hour(DateAndTime)):IF Len(H) = 1 Then H = “0” & H
 F = CStr(Minute(DateAndTime)):IF Len(F) = 1 Then F = “0” & F
 S = CStr(Second(DateAndTime)):IF Len(S) = 1 Then S = “0” & S
 Select Case Para
   Case “0”
     ForMatDate = Y & “-” & M & “-” & D & ” ” & H & “:” & F & “:” & S
   Case “1”
     ForMatDate = Y & “-” & M & “-” & D & ” ” & H & “:” & F
   Case “2”
     ForMatDate = Y & “-” & M & “-” & D
   Case “3”
     ForMatDate = Y & “/” & M & “/” & D
   Case “4”
     ForMatDate = Y & “年” & M & “月” & D & “日”
   Case “5”
     ForMatDate = M & “-” & D & ” ” & H & “:” & F
   Case “6”
     ForMatDate = M & “/” & D
   Case “7”
     ForMatDate = M & “月” & D & “日”
   Case “8”
     ForMatDate = Y & “年” & M & “月”
   Case “9”
     ForMatDate = Y & “-” & M
   Case “10”
     ForMatDate = Y & “/” & M
   Case “11”
     ForMatDate = right(Y,2) & “-” & M & “-” & D & ” ” & H & “:” & F
   Case “12”
     ForMatDate = right(Y,2) & “-” & M & “-” & D
   Case “13”
     ForMatDate = M & “-” & D
   Case Else
     ForMatDate = DateAndTime
 End Select
End Function
Response.Write ForMatDate(Now,“2”)

这个函数的巧妙之处在于,它一次性提取了日期时间的各个组成部分并完成了补零,然后通过一个参数Para来切换十几种常见的输出格式,从完整的日期时间到简写的年月,甚至中文格式都囊括在内,实用性非常高。

ASP一段自动补位的函数

除了处理日期,补位思想在其他场景也随处可见,比如生成固定位数的订单号、用户ID等。下面这个函数就更通用了,专为数字补位设计:

function formatsn(getnum,getbit)
dim formatsnnum,formatsnpre,formatsnj
formatsnnum = getbit – len(getnum)
for formatsnj = 1 to formatsnnum
formatsnpre = formatsnpre & “0”
next
formatsn = formatsnpre & getnum
end function

使用方法

formatsn(getnum, getbit)

参数很简单:
getnum 传入需要处理的数字或字符串。
getbit 指定最终输出的总位数。

它的工作流程是:先计算需要补几个零(目标位数减去当前位数),然后用循环生成相应数量的“0”作为前缀,最后与原数字拼接。这样,无论输入是“7”还是“123”,在要求5位输出时,你都能得到“00007”或“00123”这样整齐划一的结果。对于维护数据展示的规范性,这类小工具往往能起到四两拨千斤的作用。

本文转载于:https://www.jb51.net/article/184242.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注