vb.net实现时间(Date)转中文

一、 简介

在工作中可能会遇到生成报告的功能,需要将时间格式转换为中文,本文主要介绍Date格式的时间转换为中文。

  注:本文实例中 首先会对参数判断是否为空  若为空:赋默认值 再开始转换;若不为空:则开始转换。


二、 日期格式化

本文包括两种转换(2023/12/31)
格式1:2023年12月31日
格式2:二零二三年十二月三十一日

1. 将日期转换为"yyyy年MM月dd日"的中文格式

Public Function IsBoolDate(obj As Object) As String
    Dim str1 As String = "  格式不正确  "
    Try
        If obj Is Nothing OrElse obj.ToString() = "" Then
            Dim str3 = Date.MinValue '或者其他默认值,表示空日期
            str1 = str3.ToString("yyyy年MM月dd日")
        Else
            If TypeOf obj Is Date Then
                Dim str3 = CType(obj, Date)
                str1 = str3.ToString("yyyy年MM月dd日")
            Else
                str1 = "  格式不正确  "
            End If
        End If
    Catch ex As Exception
        Return str1
    End Try
    Return str1
End Function

2. 将日期转换为中文大写的年月日格式

Dim chineseNumbers() As String = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}
Public Function IsBoolDate(obj As Object) As String
    Dim str1 As String = "  格式不正确  "
        Try
            If obj Is Nothing OrElse obj.ToString() = "" Then
                Dim str3 As Date = Date.MinValue '或者其他默认值,表示空日期
                Return ToChineseYearAndMonthAndDay(str3)
            Else
                If TypeOf obj Is Date Then
                    Dim str3 As Date = CType(obj, Date)
                    Return ToChineseYearAndMonthAndDay(str3)
                Else
                    str1 = "  格式不正确  "
                End If
            End If
        Catch ex As Exception
            Return str1
        End Try
    Return str1
End Function

Private Function ToChineseYearAndMonthAndDay(dt As Date) As String
    '将年份、月份和日转换为中文文字
    Dim chineseYear As String = YearToChinese(dt.Year)
    Dim chineseMonth As String = MonthToChinese(dt.Month)
    Dim chineseDay As String = DayToChinese(dt.Day)
    '构造中文格式的日期字符串
    Dim formattedDate As String = $"{chineseYear}年{chineseMonth}月{chineseDay}日"
    Return formattedDate
End Function

'月
Private Function MonthToChinese(number As Integer) As String
    If number = 10 Then
        Return "十"
    ElseIf number > 10 Then
        Return "十" & chineseNumbers(number Mod 10)
    Else
        Return chineseNumbers(number)
    End If
End Function

'日
Private Function DayToChinese(number As Integer) As String
    If number = 10 Then
        Return "十"
    ElseIf number > 10 Then
        Return "十" & chineseNumbers(number Mod 10)
    ElseIf number = 20 Then
        Return "二十"
    ElseIf number > 20 Then
        Return "二" & chineseNumbers(number Mod 10)
    ElseIf number = 30 Then
        Return "三十"
    ElseIf number > 30 Then
        Return "三十" & chineseNumbers(number Mod 10)
    Else
        Return chineseNumbers(number)
    End If
End Function

'年
Private Function YearToChinese(number As Integer) As String
    Dim sb As New StringBuilder(4)
    While number > 0
        Dim digit As Integer = number Mod 10
        sb.Insert(0, chineseNumbers(digit))
        number \= 10
    End While
    Return sb.ToString()
End Function

三、结语

目前只遇到这两种,遇到后再更新……
如有错误或更好的方法 请告诉我!嘿嘿

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值