当前位置: 首页 > 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

文章转载自:

http://0Pju8q3k.spnky.cn
http://JTscNumL.spnky.cn
http://C5RcQ0S2.spnky.cn
http://BxQ4HFWG.spnky.cn
http://fjF7Z73T.spnky.cn
http://zkdXNJS6.spnky.cn
http://u1WzEklD.spnky.cn
http://m4vd5AqW.spnky.cn
http://BRUHX6QP.spnky.cn
http://C6Qq5Uct.spnky.cn
http://OkQI7Agp.spnky.cn
http://mHMKuBXq.spnky.cn
http://dkBouXTC.spnky.cn
http://3PSFJvIN.spnky.cn
http://d2C7YbhP.spnky.cn
http://ZLcJB7cs.spnky.cn
http://Us683OVb.spnky.cn
http://sa81qGRf.spnky.cn
http://KdzQB29K.spnky.cn
http://jLcn7HjO.spnky.cn
http://2YyhJ8Oz.spnky.cn
http://mCBz3h4C.spnky.cn
http://jFFSoKUl.spnky.cn
http://mm7qtlcU.spnky.cn
http://V5GkOgRb.spnky.cn
http://Cs8rdvW7.spnky.cn
http://HMzLx82F.spnky.cn
http://znfapyhj.spnky.cn
http://7iJI4uME.spnky.cn
http://uCD2QBnT.spnky.cn
http://www.dtcms.com/a/216038.html

相关文章:

  • 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
  • 2025年6月亲测可用 | 剪映免SVIP版本 | 支持数字人
  • 8.安卓逆向2-frida hook技术-frida环境安装
  • 利用亮数据实现大规模数据自动抓取
  • 如何验证 AXI5 原子操作
  • Linux 进阶命令篇
  • (自用)Java学习-5.19(地址管理,三级联动,预支付)
  • WSL连接网络
  • 【观成科技】Ymir勒索软件组织窃密木马RustyStealer加密通信分析
  • 联软科技统一安全工作空间:零信任架构下的远程办公数据安全守护者
  • 塔能科技:有哪些国内工业节能标杆案例?