如何修改系统短日期格式
1个回答
展开全部
榈牟檎液团判蚧岢龃恚??叶己褪奔溆泄亍>?邢讣觳榈贸鼋崧廴缦拢涸谟τ贸绦蛑惺褂
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"
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"
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询