如何从字符串中提取日期和时分
Dim s As String = "5.2?投标文件递交截止时间2023年10月30日 14:30; " '或 “1、投标文件递交截止时间2023年10月16日15时30分;”
Dim d As Date
For i As Integer = 0 To s.Length - 10
If Date.TryParse(s.SubString(i,10),d) OrElse Date.TryParse(s.SubString(i,9),d) OrElse Date.TryParse(s.SubString(i,8),d) Then
output.show(d)
Exit For
End If
Next
上面代码只能显示:2023年10月30日 如何增加时分:14:30
需求:2023年10月30日 14:30
[此贴子已经被作者于2023/10/16 2:36:41编辑过]
在表事件DataColChanged中写入,提取日期:
Select Case e.DataCol.Name
Case "招标文件的获取"
Dim s As String = e.DataRow("招标文件的获取")
Dim d As String
If s > "" Then
Dim t As Integer = s.IndexOf("下载时间") +4
Dim nmb As String = "0123456789-年月日至"
For si As Integer = t To s.Length -1
If s.Contains(s(si)) Then
d = d & s(si)
End If
Next
End If
e.DataRow("下载时间") = d
End Select
e.DataRow("招标文件的获取") = 2.招标文件网上下载时间:2023年9月28日至 2023年10月11日。
结果是 :2023年9月28日至 2023年10月11日。 这里的:,。是不需要的
我需的结果是2023年9月28日至 2023年10月11日
If s > "" Then
Dim t As Integer = s.IndexOf("下载时间") +5
d = s.substring(t).trim("。")
End If
为什么会出现多个日期?只需要一个就可以如何修改下面代码?
For Each r As Row In Tables("招标公告").Rows
Dim s As String = r("招标条件")
Dim d As String
Dim t As Integer = s.IndexOf("时间") +4
Dim nmb As String = "0123456789-年月日时分至"
For i As Integer = t To s.Length - 1
If nmb.contains(s(i))
d = d & s(i)
End If
Next
output.show(d)
Next
[此贴子已经被作者于2023/10/17 9:26:56编辑过]
源数据是什么?代码执行是什么结果?正确结果是什么?
源数据是表的单元格值,正确结果是提取一个值
此主题相关图片如下:512247447.jpg

出现错误是遍历一次增加一个日期
此主题相关图片如下:16975388.jpg

[此贴子已经被作者于2023/10/17 11:22:24编辑过]
为什么下面这些提取不日期,年月日 时分:5.2投标文件递交截止时间(投标截止时间,下同):2022年9月6日9时30分?
5.2投标文件递交截止时间(投标截止时间,下同):2022年9月5日9时30分?
5.2?投标文件递交截止时间2022年9月1日9:30;
5.2投标文件递交截止时间:2022年8月31日9:30?
5.2投标文件递交截止时间:2022年8月31日9:30?
Dim s As String = "5.2?投标文件递交截止时间2023年10月30日14:30; "
Dim d As Date
For i As Integer = 0 To s.Length - 16
If Date.TryParse(s.SubString(i,16),d) OrElse Date.TryParse(s.SubString(i,15),d) OrElse Date.TryParse(s.SubString(i,14),d) Then
output.show(d) '2023-10-30 14:30:00
Exit For
End If
Next
[此贴子已经被作者于2023/11/1 10:19:42编辑过]
For i As Integer = 0 To s.Length - 14
If Date.TryParse(s.SubString(i, 14), d) OrElse Date.TryParse(s.SubString(i, 15), d) OrElse Date.TryParse(s.SubString(i, 16), d) Then