VB中的日期格式化与字符串操作
VB中的日期格式化与字符串操作
工作中在处理各种日期的时候总会遇到各种各样的需求,做个小总结吧。
1.日期转换为3码表示(eg:2025/05/27转为55T)
转换表如下
方法一:利用内置函数
ExpiredDate = Strings.Right(ExpDate.ToString("yy"), 1) & O_ParseMonth(ExpDate.ToString("MM")) & O_ParseDay(ExpDate.ToString("dd"))
分析一下
1.VB中的Strings.Right函数
在Visual Basic (VB) 中,Strings.Right 是一个用于字符串操作的内置方法。它可以从指定字符串的右侧返回一定数量的字符。
其语法如下:
Strings.Right(string, length)
其中string 表示要截取的源字符串,而length则表示从右端起需要获取的字符数。
2.利用 ToString 方法实现自定义日期格式转换
在上面代码中,需要处理日期对象 ExpDate ,可以通过调用.ToString(“yyMMdd”)将日期格式化为两位年份、月份以及日的形式。
代码类似下面这样:
Dim formattedDate As String = ExpDate.ToString("yyMMdd")
3.进阶结合使用
如果希望进一步提取该日期字符串的一部分,则可结合使用 Strings.Right 函数完成特定需求的操作。比如仅保留最后四位数字作为月和日的信息展示。
Dim monthDayPart As String = Strings.Right(formattedDate, 4)
通过组合不同的功能模块,即先进行日期到字符串的整体转化再辅以精确裁剪技术,从而达到灵活控制输出样式的目的。
4.O_ParseMonth()函数(自定义模块,O_ParseDay()类似)
这个应该是原先公司代码内部定义的一个函数,并不是一个标准库中的内置函数,我利用AI做了个解析(仅供参考),以下是AI的解释:
一般而言,基于名称推测,该函数可能是为了解析月份数据而设计的逻辑单元。
关于如何定义和使用类似功能的一些常见模式:自定义解析月份函数
假设我们需要创建一个名为 O_ParseMonth 的函数来处理字符串形式的日期并提取其中的月份部分,可以按照如下方式编写代码:
Function O_ParseMonth(ByVal dateString As String) As IntegerDim parsedDate As Date' 尝试将输入字符串转换为日期对象If IsDate(dateString) ThenparsedDate = CDate(dateString)' 返回解析后的月份值Return Month(parsedDate)Else' 如果无法成功解析则返回错误标志(例如0)Return 0End If
End Function
此版本的 O_ParseMonth 接受单个参数——表示日期的字符串,并尝试将其转化为有效的 Date 类型变量;随后通过调用内置方法 Month() 提取出对应的月份数字作为结果输出
方法一:笨办法硬转
Dim ExpiredDate As String = "" '有效期
Dim ManufacetureDate As Date = CDate(tmpTagInfo.Item(strTag)) '定义并抓取生产日期
Dim ExpDate As Date = ManufacetureDate.AddDays(90) '定义效期=生产日期+90天
ExpiredDate = ExpDate.ToString("yyyyMMdd") '将效期转化为string
Dim Month As String = ExpiredDate.Substring(4, 2) '截取月份的两位数为Month
Select Case Month '2码转换为1码Case "01"Month = "1"Case "02"Month = "2"Case "03"Month = "3"Case "04"Month = "4"Case "05"Month = "5"Case "06"Month = "6"Case "07"Month = "7"Case "08"Month = "8"Case "09"Month = "9"Case "10"Month = "A"Case "11"Month = "B"Case "12"Month = "C"
End Select
Dim Date1 As String = ExpiredDate.Substring(6, 2) '截取日的两位数为Date1
Select Case Date1 '2码转换为1码Case "01"Date1 = "1"Case "02"Date1 = "2"Case "03"Date1 = "3"Case "04"Date1 = "4"Case "05"Date1 = "5"Case "06"Date1 = "6"Case "07"Date1 = "7"Case "08"Date1 = "8"Case "09"Date1 = "9"Case "10"Date1 = "A"Case "11"Date1 = "B"Case "12"Date1 = "C"Case "13"Date1 = "D"Case "14"Date1 = "E"Case "15"Date1 = "F"Case "16"Date1 = "G"Case "17"Date1 = "H"Case "18"Date1 = "J"Case "19"Date1 = "K"Case "20"Date1 = "L"Case "21"Date1 = "M"Case "22"Date1 = "N"Case "23"Date1 = "P"Case "24"Date1 = "Q"Case "25"Date1 = "R"Case "26"Date1 = "S"Case "27"Date1 = "T"Case "28"Date1 = "U"Case "29"Date1 = "V"Case "30"Date1 = "W"Case "31"Date1 = "X"
End Select
ExpiredDate = ExpiredDate.Substring(3, 1) & Month & Date1 '最后进行拼接
分析一下其中出现的函数
1.VB中使用Date类型和CDate函数进行日期转换
Date类型用于存储日期和时间值;
CDate函数可以将字符串或其他类型的值转换为 Date 类型;
AddDays方法对日期进行增减天数的操作;
ToString(“yyyy/MM/dd”) 方法可以将日期格式化为指定的“yyyy/MM/dd”格式。
以下是一个完整的示例代码,展示了如何在VB中定义日期变量、使用CDate函数进行日期转换以及使用AddDays方法进行日期操作:
Dim str_BDate As String = "2023/03/01" ' 定义一个字符串类型的日期
Dim str_EDate As String = "2023/03/31" ' 定义另一个字符串类型的日期' 使用 CDate 将字符串转换为 Date 类型
Dim date_BDate As Date = CDate(str_BDate) ' 转换开始日期
Dim date_EDate As Date = CDate(str_EDate).AddDays(1) ' 转换结束日期并加一天' 输出转换后的日期
Console.WriteLine("开始日期: " & date_BDate.ToString("yyyy/MM/dd")) ' 格式化输出日期
Console.WriteLine("结束日期: " & date_EDate.ToString("yyyy/MM/dd")) ' 格式化输出日期' 检查日期是否为空
If Not String.IsNullOrEmpty(str_BDate) ThenDim sqlCondition As String = " and Send_Time>='" & date_BDate.ToString("yyyy/MM/dd") & "' "Console.WriteLine("SQL 条件: " & sqlCondition)
End IfIf Not String.IsNullOrEmpty(str_EDate) ThenDim sqlCondition As String = " and Send_Time<='" & date_EDate.ToString("yyyy/MM/dd") & "' "Console.WriteLine("SQL 条件: " & sqlCondition)
End If