如何修改系统短日期格式
时 间:2008-05-03 13:51:06
作 者:第7天 ID:668 城市:台州
摘 要:修改系统短日期格式
正 文:
本人在做应用程序时,发现在某些用户的机器上部分模块的查找和排序会出错,而且都和时间有关。经仔细检查得出结论如下:
在应用程序中使用 format("日期型数据","short date")把长日期格式成短日期,如果本地电脑系统的“短日期”格式不一样,会得到两种不同的结果。比如 同样是format("2008-5-1 23:01:20","short date")在短日期格式为"yyyy-m-d"的电脑上,得出的结果是"2008-5-1",而在短日期格式为"yyyy-mm-dd"的电脑上得到的结果是"2008-05-01"。说了半天,有什么不同?不都是表示同一天吗?
答案是:两种结果不同。因为被format格式以后的日期已经不再是日期了,ACCESS把它当作文本来处理。比如我们对三个文本进行升序排列:
第一种是:2008-4-30 ,2008-4-8,2008-5-1
第二种是:2008-04-08,2008-04-30,2008-05-01
可以看出两种不同的格式排序得到的结果是不一样的。使用between ....and...进行查找效果亦是如此。
所以我们大都喜欢自己的程序运行在短日期格式为"YYYY-MM-DD"的电脑上,这样我们格式成短日期以后的数据仍然可以正确的查找和排序。但往往事情并不是都按照理想的方向进行,有些用户的短日期格式就不是"YYYY-MM-DD",所以我们要对它修改。修改的代码如下:
Public Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
Public Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Public Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Long
设置短日期格式
Public Const LOCALE_SSHORTDATE = &H1F Public Const LOCALE_SDATE = &H1D
'下面的过程可以帮你达到目的
sub setshortdate()
Dim llocal As Long
Dim sa As String
Dim lOk As Long
On Error GoTo ErrShow
sa = Space(20)
llocal = GetUserDefaultLCID()
lOk = GetLocaleInfo(llocal, LOCALE_SSHORTDATE, ByVal sa, 20)
If Trim(sa) <> "yyyy-MM-dd" Then
If MsgBox("您的系统日期不是(YYYY-MM-DD)格式,强烈建议您将它修改成该格式," & Chr(10) _
& "否则软件可能会出现运行障碍!" _
& Chr(10) & Chr(10) & "点击'是'将自动为您修改。", vbQuestion + vbYesNo, "忠告") = vbYes Then
sa = "yyyy-MM-dd"
llocal = GetUserDefaultLCID()
SetLocaleInfo llocal, LOCALE_SSHORTDATE, ByVal sa
End If
End If
sa = Space(2)
lOk = GetLocaleInfo(llocal, LOCALE_SDATE, ByVal sa, 2)
If Trim(sa) <> "-" Then
sa = "-&q
Access软件网QQ交流群 (群号:54525238)
Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)