以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]如何将字符串中表示时间的串转换为日期 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=43959) |
-- 作者:cqlwsam -- 发布时间:2013/12/19 15:56:00 -- [求助]如何将字符串中表示时间的串转换为日期 如题,如何将下列的字符串中表示时间的串拆分后转换成日期。拼接时行与行间使用了两个换行符,字段间采用分号,而字段名与值间采用冒号。我弄了一下,感觉无从下手。谢谢各位大虾帮我看看。谢谢! “登记时间:是;入院时间:否;开始时间: 2013/1/1;截止时间: 2013/10/10;患者种类: 预约患者(登记时间);统计项目: 性别. 登记时间:是;入院时间:否;开始时间: 2013/1/1;截止时间: 2013/10/10;患者种类: 住院患者(登记时间);统计项目: 性别. 登记时间:是;入院时间:否;开始时间: 2013/1/1;截止时间: 2013/10/10;患者种类: 失访患者(登记时间);统计项目: 性别.” |
-- 作者:Bin -- 发布时间:2013/12/19 16:10:00 -- Dim str As String =Forms("窗口1").Controls("TextBox1").text Dim strs As String()=str.Split(vbcrlf) For Each s As String In strs If s <> vbcrlf Then Dim ss As String()=s.Split(";") For Each s1 As String In ss If s1.Contains("开始时间") OrElse s1.Contains("截止时间") Then Dim d As Date = "#" & s1.Split(":")(1) & "#" MessageBox.show(s1 & " 转为为时间格式:" & d) End If Next End If Next
|
-- 作者:lsy -- 发布时间:2013/12/19 16:26:00 -- Dim strs As String strs + = "登记时间:是;入院时间:否;开始时间: 2013/1/1;截止时间: 2013/10/10;患者种类: 预约患者(登记时间);统计项目: 性别." & vbcrlf & vbcrlf & vbcrlf strs + = "登记时间:是;入院时间:否;开始时间: 2013/1/1;截止时间: 2013/10/10;患者种类: 住院患者(登记时间);统计项目: 性别." & vbcrlf & vbcrlf & vbcrlf strs + = "登记时间:是;入院时间:否;开始时间: 2013/1/1;截止时间: 2013/10/10;患者种类: 失访患者(登记时间);统计项目: 性别." Output.Show(strs) strs = strs.Replace(vbcr,"") For Each str As String In strs.Split(vblf) For Each s As String In str.Split(";") For i As Integer = 0 To s.Split(":").Length - 1 If IsDate(s.Split(":")(i)) Then Output.Show(Format(Cdate(s.Split(":")(i)),"yyyy-MM-dd")) End If Next Next Next |
-- 作者:cqlwsam -- 发布时间:2013/12/19 16:28:00 -- 我得花时间消化才行。有点难!呵呵! |
-- 作者:cqlwsam -- 发布时间:2013/12/19 17:09:00 -- 能不能转化为这样的格式:“sql * from {基本情况} where 登记时间=true and 入院时间=false and 开始时间=2013-01-01 and 截止时间=2013-10-10 and 患者类型=预约患者(登记时间)”,每一个换行符形成新的sql语句。谢谢! |
-- 作者:Bin -- 发布时间:2013/12/19 17:11:00 -- 2,3楼可以完美解决你的问题. 我不清楚你是怎么照做的,上个例子看看 |
-- 作者:cqlwsam -- 发布时间:2013/12/19 17:19:00 -- 我对这个这样东西搞不懂: 如果字符串中:开始日期:无,我舍弃它不同,如果开始日期:2013-01-01,我就用它。我也用contains。 我是这样写的: If txt1>"" AndAlso txt1.contains("开始时间:无") Then d1="" Else If txt1>"" AndAlso txt1.contains("开始时间:####-##-##") Then d1="####-##-##" End If 我得意思是:如果开始时间无,d1为空,如果开始时间存在,就取开始时间冒号后面的时间。想用通配符来表示,好像有点问题。 |
-- 作者:Bin -- 发布时间:2013/12/19 17:22:00 -- 没有 ##### 这样的通配. If txt1>"" AndAlso txt1.contains("开始时间:无") Then d1="" Else If txt1>"" AndAlso txt1.contains("开始时间:") Then d1="时间" End If [此贴子已经被作者于2013-12-19 17:22:45编辑过]
|
-- 作者:cqlwsam -- 发布时间:2013/12/19 17:25:00 -- 哦,谢谢!这样应该得行了。我试试! |
-- 作者:cqlwsam -- 发布时间:2013/12/20 14:27:00 -- 按bin及lsy的思路已经搞定。但有一个问题, 如:“登记时间:是;入院时间:否;开始时间: 2013/1/1;截止时间: 2013/10/10;患者种类: 预约患者(登记时间);统计项目: 性别. 登记时间:是;入院时间:否;开始时间: 2013/1/1;截止时间: 2013/10/10;患者种类: 住院患者(登记时间);统计项目: 性别.登记时间:是;入院时间:否;开始时间: 2013/1/1;截止时间: 2013/10/10;患者种类: 失访患者(登记时间);统计项目: 性别.”。 按道理,通过分组统计将形成三个统计表,我想将此嵌入拆开的语句中,统计表用“统计表n”来表示,由1开始,每循环一次,添加1,直到完成循环。然后跳出循环,进行统计表的合并。如何写。如果是固定的组合固定的表我会做,但这种带有循环,表个数不定的我不会弄。点点思路。谢谢! |