求一个VB。NET的算法,高分相送!在线急等!

zhangye820911 2007-03-26 06:52:07
TextBox中,输入日期类型,可以有以下几种方法
yyyy/mm
yyyy/m
yy/mm
yy/m
yyyymm
yymm
在进入数据库前,全部转换成yyyy/mm格式!

...全文
247 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangye820911 2007-03-27
  • 打赏
  • 举报
回复
vinsonhwj() 谢谢,绝对正解!
zhangye820911 2007-03-27
  • 打赏
  • 举报
回复
vinsonhwj()
我刚到公司,等会试下,一会就给你分
s_liangchao1s 2007-03-27
  • 打赏
  • 举报
回复
呵呵 来晚了 已经有答案了!!
懒牛科技 2007-03-27
  • 打赏
  • 举报
回复
Try
Dim tm As datetime = datetime.parse(textbox1.text.trim)
Dim sTime As String = tm.toString("yyyy/MM")
Catch ex1 As Exception
messagebox.show("格式錯誤!")
End Try
startstartsvip 2007-03-27
  • 打赏
  • 举报
回复

可以放三个 textbox

看他还辖输入
hertcloud 2007-03-26
  • 打赏
  • 举报
回复
Try
Dim tm As datetime = datetime.parse(textbox1.text.trim)
Dim sTime As String = tm.toString("yyyy/MM")
Catch ex1 As Exception
messagebox.show("格式錯誤!")
End Try
vinsonhwj 2007-03-26
  • 打赏
  • 举报
回复
我又重新整理了一下。
--------------------------------------------------------------------------
Private Function DateFormat(ByVal str As String) As String
Dim sYear As String
Dim sMon As String
Dim ErrMsg As String = "日期格式错误!"
Dim i As Int32 = Strings.InStr(str, "/")

Select Case str.Length
Case 7
'yyyy/mm
If i > 0 Then
If Strings.Left(str, i - 1).Trim.Length = 4 Then
sYear = Strings.Left(str, i - 1).Trim
If Strings.Mid(str, i + 1).Trim.Length = 2 Then
sMon = Strings.Mid(str, i + 1)
Else
Throw New Exception(ErrMsg)
End If
Else
Throw New Exception(ErrMsg)
End If
Else
Throw New Exception(ErrMsg)
End If

Case 6
'yyyy/m
If i <> 0 Then
If Strings.Left(str, i - 1).Trim.Length = 4 Then
sYear = Strings.Left(str, i - 1).Trim
If Strings.Mid(str, i + 1).Trim.Length = 1 Then
sMon = Strings.Mid(str, i + 1).PadLeft(2, "0")
Else
Throw New Exception(ErrMsg)
End If
Else
Throw New Exception(ErrMsg)
End If
Else
'yyyymm
sYear = Strings.Left(str, 4).Trim
sMon = Strings.Right(str, 2)
End If

Case 5
'yy/mm
If i > 0 Then
If Strings.Left(str, i - 1).Trim.Length = 2 Then
sYear = Strings.Left(str, i - 1).Trim
If Strings.Mid(str, i + 1).Trim.Length = 2 Then
sMon = Strings.Mid(str, i + 1).PadLeft(2, "0")
Else
Throw New Exception(ErrMsg)
End If
Else
Throw New Exception(ErrMsg)
End If
Else
Throw New Exception(ErrMsg)
End If

Case 4
'yy/m
If i <> 0 Then
If Strings.Left(str, i - 1).Trim.Length = 2 Then
sYear = Strings.Left(str, i - 1).Trim
If Strings.Mid(str, i + 1).Trim.Length = 1 Then
sMon = Strings.Mid(str, i + 1).PadLeft(2, "0")
Else
Throw New Exception(ErrMsg)
End If
Else
Throw New Exception(ErrMsg)
End If
Else
'yymm
If Strings.Left(str, 2).Trim.Length = 2 Then
sYear = Strings.Left(str, 2).Trim
If Strings.Right(str, 2).Trim.Length = 2 Then
sMon = Strings.Right(str, 2).PadLeft(2, "0")
Else
Throw New Exception(ErrMsg)
End If
Else
Throw New Exception(ErrMsg)
End If
End If
Case Else
Throw New Exception(ErrMsg)
End Select

If sYear.Trim.Length = 2 Then
sYear = Strings.Left(Now.Year, 2) & sYear
End If

Return sYear & "/" & sMon
End Function
vinsonhwj 2007-03-26
  • 打赏
  • 举报
回复
有些地方漏加:Throw New Exception("格式错误!"),楼主补一下吧。
vinsonhwj 2007-03-26
  • 打赏
  • 举报
回复
刚写出来的,给D意见。
Private Function DateFormat(ByVal str As String) As String
Dim sYear As String
Dim sMon As String
Dim i As Int32 = Strings.InStr(str, "/")

Select Case str.Length
Case 7
'yyyy/mm
If i > 0 Then
If Strings.Left(str, i - 1).Trim.Length = 4 Then
sYear = Strings.Left(str, i - 1).Trim
If Strings.Mid(str, i + 1).Trim.Length = 2 Then
sMon = Strings.Mid(str, i + 1)
End If
End If
End If
Case 6
'yyyy/m
If i > 0 Then
If Strings.Left(str, i - 1).Trim.Length = 4 Then
sYear = Strings.Left(str, i - 1).Trim
If Strings.Mid(str, i + 1).Trim.Length = 1 Then
sMon = Strings.Mid(str, i + 1).PadLeft(2, "0")
End If
End If
End If
'yyyymm
If i = 0 Then
sYear = Strings.Left(str, 4).Trim
sMon = Strings.Right(str, 2)
End If
Case 5
'yy/mm
If i > 0 Then
If Strings.Left(str, i - 1).Trim.Length = 2 Then
sYear = Strings.Left(str, i - 1).Trim
If Strings.Mid(str, i + 1).Trim.Length = 2 Then
sMon = Strings.Mid(str, i + 1).PadLeft(2, "0")
End If
End If
End If
Case 4
'yy/m
If i > 0 Then
If Strings.Left(str, i - 1).Trim.Length = 2 Then
sYear = Strings.Left(str, i - 1).Trim
If Strings.Mid(str, i + 1).Trim.Length = 1 Then
sMon = Strings.Mid(str, i + 1).PadLeft(2, "0")
Else
Throw New Exception("格式错误!")
End If
Else
Throw New Exception("格式错误!")
End If
End If

'yymm
If i = 0 Then
If Strings.Left(str, 2).Trim.Length = 2 Then
sYear = Strings.Left(str, 2).Trim
If Strings.Right(str, 2).Trim.Length = 2 Then
sMon = Strings.Right(str, 2).PadLeft(2, "0")
Else
Throw New Exception("格式错误!")
End If
Else
Throw New Exception("格式错误!")
End If
End If
End Select

If sYear.Trim.Length = 2 Then
sYear = Strings.Left(Now.Year, 2) & sYear
End If

Return sYear & "/" & sMon
End Function
DengXingJie 2007-03-26
  • 打赏
  • 举报
回复
yyyy/mm
yyyy/m
yy/mm
yy/m
yyyymm
yymm
可能要对这种几种类型数据做出判断才行
也可以先把没"/"的加上"/"再做统一做转换
syeerzy 2007-03-26
  • 打赏
  • 举报
回复
Try
Dim a As datetime = datetime.parse(textbox1.text.trim)
Dim sTime As String = a.toString("yyyy/MM")
Catch e1 As Exception
messagebox.show("格式錯誤!")
End Try
syeerzy 2007-03-26
  • 打赏
  • 举报
回复
数据库里是varchar?
zhangye820911 2007-03-26
  • 打赏
  • 举报
回复
dragonlus(毒龙)
我要的是VB。NET的,麻烦了啊
阿Deee 2007-03-26
  • 打赏
  • 举报
回复
占上先
dragonlus 2007-03-26
  • 打赏
  • 举报
回复
try
{
datetime a = datetime.parse(textbox1.text.trim());
string sTime = a.toString("yyyy/MM");
}catch(Exception e1)
{
messagebox.show("格式錯誤!");
}

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧