当前位置: 首页 > news >正文

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

相关文章:

  • FART 自动化脱壳框架一些 bug 修复记录
  • CellularPro 1.8.6.1 | 提升网络速度,抢到更多基站的速度
  • 【git】git rebase 和 git pull区别?
  • 编译pg_duckdb步骤
  • Linux 527 重定向 2>1 rsync定时同步(未完)
  • 【ARM】如何通过ARMDS的Map文件查看堆栈调用情况
  • U-Boot ARMv8 平台异常处理机制解析
  • 力扣经典算法篇-13-接雨水(较难,动态规划,加法转减法优化,双指针法)
  • PID - 模拟
  • 3D草图绘制管道
  • 从零搭建上门做饭平台:高并发订单系统设计
  • Deep Evidential Regression
  • doucker 挂载卷
  • 零基础设计模式——结构型模式 - 装饰器模式
  • ubuntu 制作 ssl 证书
  • 通过ansible playbook创建azure 资源
  • 电子邮箱设置SSL:构建邮件传输的加密护城河
  • 解决Qt 打包的软件缺少dll问题
  • UDP 传输时间(延迟)
  • 记录:训练过程中可训练参数出现nan和inf造成loss为nan
  • 支付商城网站制作/软件开发
  • 邯郸网站开发/宁波网站推广优化公司电话
  • 网站维护多少钱一个月/企业网络营销策划方案
  • 辽宁网络推广/郑州优化网站关键词
  • 服装设计工作室/谷歌seo关键词排名优化
  • 2b网站推广怎么做/品牌推广方案