以文本方式查看主题

-  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,直到完成循环。然后跳出循环,进行统计表的合并。如何写。如果是固定的组合固定的表我会做,但这种带有循环,表个数不定的我不会弄。点点思路。谢谢!