| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1989 人关注过本帖
标题:我这个split有错吗?为什么会有这样的结果?
只看楼主 加入收藏
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
结帖率:66.67%
收藏
 问题点数:0 回复次数:11 
我这个split有错吗?为什么会有这样的结果?
function setdate(strdate)
    dim tem,str
    str=split(strdate,"-")  '把日期按-号分割成如:2008,9,4;
    tem=str(0)&"-"
    if len(str(1))=1 then  '如果第2个字符串是1个数量,则:
       str(1)="0"&str(1)   '在前面加0;
    end if
    tem=tem&str(1)&"-"
    if len(str(2))=1 then  '道理同上;
       str(2)="0"&str(2)
    end if
    tem=tem&str(2)
    setdate=tem
end function

说明:日期格式是这样的:2008-9-8 18:30:21
通过自定义函数setdate(current_date),得到这样的格式:2008-09-8 18:30:21,月份可以实现2位09,日子却不能得到2位,这是为何?

[[it] 本帖最后由 nicechlk 于 2008-10-26 18:39 编辑 [/it]]
搜索更多相关主题的帖子: split 结果 
2008-10-26 18:38
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
楼主这个函数只能使用在日期格式为"2008-9-8"的格式,带时间就会出错。
2008-10-26 18:40
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
收藏
得分:0 
哦,是这样!
如果是我的那种日期+时间格式,有办法么?

莫以善小而不为,莫以恶小而为之!
2008-10-26 18:48
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
VBS里有一个系统函数FormatDateTime函数可以将时间过滤掉比自己写函数过滤省事
相关MSDN参考
http://msdn.(VS.80).aspx
2008-10-26 18:53
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
收藏
得分:0 
嗯,我明白了!
先把时间日期通过函数FormatDateTime转换成字符串,再处理。
谢谢!

莫以善小而不为,莫以恶小而为之!
2008-10-26 19:01
hmhz
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:30
帖 子:1890
专家分:503
注 册:2006-12-17
收藏
得分:0 
程序代码:
<%
function setdate(strdate)
    dim str,tem1,tem2
    str=split(strdate," ")   '把整个时间按空格分割,如:2008-9-4 , 18:30:21
    tem1=split(str(0),"-")   '把日期分割,如:2008 , 9 , 4
    tem2=split(str(1),":")   '把时间分割,如:18 , 30 , 21
    if len(tem1(1))=1 then   '当月长度等于1时
       tem1(1)="0"&tem1(1)   '在前面加0
    end if
    if len(tem1(2))=1 then    '当日长度等于1时
       tem1(2)="0"&tem1(2)    '在前面加0
    end if
    if len(tem2(0))=1 then    '当时长度等于1时
       tem2(0)="0"&tem2(0)    '在前面加0
    end if
    if len(tem2(1))=1 then    '当分长度等于1时
       tem2(1)="0"&tem2(1)    '在前面加0
    end if
    if len(tem2(2))=1 then    '当秒长度等于1时
       tem2(2)="0"&tem2(2)    '在前面加0
    end if
    setdate=tem1(0)&"-"&tem1(1)&"-"&tem1(2)&" "&tem2(0)&":"&tem2(1)&":"&tem2(2)
end function
%>


[[it] 本帖最后由 hmhz 于 2008-10-26 20:52 编辑 [/it]]

[编程论坛] ASP超级群:49158383  敲门暗号:ASP编程
龍艺博客 http://www.
2008-10-26 19:05
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
收藏
得分:0 
6楼的方法甚好,谢谢!
不过,
tem1=split(str(0),&"-")  '把日期分割,如:2008 , 9 , 4
tem2=split(str(1),&":")  '把时间分割,如:18 , 30 , 21
这里不能有“&”,可能是你手误。

莫以善小而不为,莫以恶小而为之!
2008-10-26 20:13
hmhz
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:30
帖 子:1890
专家分:503
注 册:2006-12-17
收藏
得分:0 
不好意思,手误,纯粹是手误

[编程论坛] ASP超级群:49158383  敲门暗号:ASP编程
龍艺博客 http://www.
2008-10-26 20:19
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
收藏
得分:0 
呵呵,暇不掩玉!

莫以善小而不为,莫以恶小而为之!
2008-10-26 20:27
hmhz
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:30
帖 子:1890
专家分:503
注 册:2006-12-17
收藏
得分:0 
在复杂的格式化一下
程序代码:
<%
function setdate(str1,str2)
    dim tem,tem1,tem2,tem3,tem4,tem5
    if instr(str1," ")<>0 then
        tem=split(str1," ")   '把整个时间按空格分割,如:2008-9-4 , 8:3:2
        tem1=split(tem(0),"-")   '把日期分割,如:2008 , 9 , 4
        tem2=split(tem(1),":")   '把时间分割,如:8 , 3 , 2
        if len(tem1(1))=1 then   '当月长度等于1时
               tem1(1)="0"&tem1(1)   '在前面加0
        end if
        if len(tem1(2))=1 then    '当日长度等于1时
               tem1(2)="0"&tem1(2)    '在前面加0
        end if
        if len(tem2(0))=1 then    '当时长度等于1时
               tem2(0)="0"&tem2(0)    '在前面加0
        end if
        if len(tem2(1))=1 then    '当分长度等于1时
               tem2(1)="0"&tem2(1)    '在前面加0
        end if
        if len(tem2(2))=1 then    '当秒长度等于1时
               tem2(2)="0"&tem2(2)    '在前面加0
        end if
        tem3=tem1(0)&"-"&tem1(1)&"-"&tem1(2)&" "&tem2(0)&":"&tem2(1)&":"&tem2(2)
    else
        if str2=0 then
            tem3="格式不对"
        end if
        if str2=1 then
            if instr(str1,"-")=0 then
                tem4="格式不对"
            else
                tem1=split(str1,"-")   '把日期分割,如:2008 , 9 , 4
                if len(tem1(1))=1 then   '当月长度等于1时
                       tem1(1)="0"&tem1(1)   '在前面加0
                end if
                if len(tem1(2))=1 then    '当日长度等于1时
                       tem1(2)="0"&tem1(2)    '在前面加0
                end if
                tem4=tem1(0)&"-"&tem1(1)&"-"&tem1(2)
            end if
        end if
        if str2=2 then
            if instr(str1,":")=0 then
                tem5="格式不对"
            else
                tem2=split(str1,":")   '把时间分割,如:8 , 3 , 2
                    if len(tem2(0))=1 then    '当时长度等于1时
                       tem2(0)="0"&tem2(0)    '在前面加0
                end if
                if len(tem2(1))=1 then    '当分长度等于1时
                       tem2(1)="0"&tem2(1)    '在前面加0
                end if
                if len(tem2(2))=1 then    '当秒长度等于1时
                       tem2(2)="0"&tem2(2)    '在前面加0
                end if
                tem5=tem2(0)&":"&tem2(1)&":"&tem2(2)
            end if
        end if
    end if
Select Case str2
Case 0 setdate=tem3
Case 1 setdate=tem4
Case 2 setdate=tem5
End Select
end function
%>

<%=setdate("2008-9-4 8:3:2",0)%>  后面的参数0为整个时间格式化
<%=setdate("2008-9-4",1)%>        后面的参数1为格式化日期
<%=setdate("8:3:2",2)%>           后面的参数2为格式化时间


[[it] 本帖最后由 hmhz 于 2008-10-26 21:59 编辑 [/it]]

[编程论坛] ASP超级群:49158383  敲门暗号:ASP编程
龍艺博客 http://www.
2008-10-26 21:23
快速回复:我这个split有错吗?为什么会有这样的结果?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025912 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved