vb字符串型的日期时间转数字型的

sss=“09Sep201410:00:00”如上面这个,我见有的人是用直接定义变量类型的方法,dimmydateasdate,然后mydate=sss就可以了。得到“2... sss=“09 Sep 2014 10:00:00”
如上面这个,我见有的人是用直接定义变量类型的方法,dim mydate as date ,然后mydate=sss就可以了。
得到“2014/9/9 10:00:00”
1、这是什么原理呢,为什么他能直接就把英文的月份转了呀?
2、如果用函数转,应该怎么转呀?
3、如果我想直接转成2014-9-9 10:00:00,怎么做方便呢?
4、我见他们写myDate = myDate + #8:00:00 AM# 这又是个什么格式的写法,为什么要加#,还有那个AM是不是可以去掉呀?
展开
 我来答
网海1书生
科技发烧友

推荐于2017-10-05 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
1、这个不用你操心的,VB会自动判断出这是个日期格式的字符串,然后把它赋值给一个日期型变量时,VB会自动进行转换的;

2、可以用CDate函数转:
sss = "09 Sep 2014 10:00:00"
Dim mydate As Date
mydate = sss
nydate = CDate(sss) '这两种方式是一样的,VB会自动进行转换的

3、转换后的日期格式是由你的电脑设置的日期格式决定的,比如你的电脑如果设的是2014/9/9 10:00:00,那么你直接显示这个日期的话也就是这样的格式。
如果要显示为2014-9-9 10:00:00,可以用Format函数,不过要注意的是转换后仍然是字符串格式:
sss = "09 Sep 2014 10:00:00"
Print Format(sss, "yyyy-m-d hh:nn:ss")

4、日期变量是可以直接进行加减运算的,myDate = myDate + #8:00:00 AM#表示在myDate这个时间点上再增加8个小时。#是日期型数据的定界符,就像双引号是字符串的定界符一样,给一个日期型变量赋值一个固定的日期值可以这样:

mydate = #2014/10/1 20:00:00#
AM是由VB自动加上去的,#8:00:00 AM#表示上午八点,你把AM去掉也可以,但VB又会自动添加上去的。另外,如果你输入#20:00:00#,VB也会自动变为#8:00:00 PM#
追问
1、cdate好强大,日期、月份、年份、时间,随意换位置,只要中间用空格隔开,都可以转换成正确的日期格式。

2、format函数也很强大,貌似他是先把字符串转换成了日期格式,再以字符串的形式表达的。

3、如果我想加8小时,而且想要format那样“-”分开的格式,我最好用什么办法?(日期变量可以直接加减运算,但是格式不和要求,format格式正确,但字符串好像不好直接加8)
追答
你把日期加减后再用Format进行格式化嘛!
下面的代码是把当前时间加8小时后再显示到窗体上:
Print Format(Now + #8:00:00 AM#, "yyyy-m-d hh:nn")
或者
Print Format(DateAdd("h", 8, Now), "yyyy-m-d hh:nn")
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式