现在有个vb5.0的老系统,部署在很多国家. 我发现Date类型的变量总是显示当前区域的默认时间格式,比如法国就是"dd/mm/yyyy hh:mm:ss". 如果windows的 格式和区域都选法国,下面的代码就无法得到需要的时间格式.Dim lsDate As Date
lsDate = Format("2008-07-01 01:01:01", "yyyy-mm-dd hh:mm:ss")
Msgbox lsDate得到的格式还是"01/07/2008 01:01:01",也就是系统默认当前区域的时间格式。如果lsDate是String就没有这个问题,可是我不可能把现有的很多变量类型都改掉啊。不知道有什么好的解决方法。
lsDate = Format("2008-07-01 01:01:01", "yyyy-mm-dd hh:mm:ss")
Msgbox lsDate得到的格式还是"01/07/2008 01:01:01",也就是系统默认当前区域的时间格式。如果lsDate是String就没有这个问题,可是我不可能把现有的很多变量类型都改掉啊。不知道有什么好的解决方法。
lsDate = now
Msgbox Format(lsDate , "yyyy-mm-dd hh:mm:ss")
日期格式应该是打印或者显示出来的时候才有意义,转化成String也没什么问题啊
这句代码没有意义.日期型数据存放的是日期,没有格式.
Format函数返回的是字符型
·楼主左手拿碗右手拿筷
·楼主右手拿筷左手拿碗
这两种描述是完全等价的,对楼主如何拿碗筷没任何影响。
按照MS的公开文档,
Date类型的变量就是显示当前区域的默认时间格式。LZ如果需要统一显示形式,
显示之前用FORMAT格式化一下就是了。
或者,
如果用户允许的话,
调用API修改“当前区域的默认时间格式”为你要的格式就好了。
一般来说正确的做法应该是表示前格式化为需要的格式,要保存重复利用的话就保存到STRING变量中。
资料1(MSDN中对“Date 数据类型”的描述):
Date 数据类型
Date 变量存储为 IEEE 64 位(8 个字节)浮点数值形式,其可以表示的日期范围从 100 年 1 月 1 日到 9999 年 12 月 31 日,而时间可以从 0:00:00 到 23:59:59。任何可辨认的文本日期都可以赋值给 Date 变量。日期文字须以数字符号 (#) 扩起来,例如,#January 1, 1993# 或 #1 Jan 93#。
Date 变量会根据计算机中的短日期格式来显示。时间则根据计算机的时间格式(12 或 24 小时制)来显示。
当其他的数值类型要转换为 Date 型时,小数点左边的值表示日期信息,而小数点右边的值则表示时间。午夜为 0 而中午为 0.5。负整数表示 1899 年 12 月 30 日之前的日期。--注意红色部分,人家白纸黑字地写了“Date 变量会根据计算机中的短日期格式来显示。时间则根据计算机的时间格式(12 或 24 小时制)来显示。”。