我一直在搜索MSDN或任何其他官方规范而没有任何运气,这些规范描述了如何在日期格式文本框中解释2位数年份。也就是说,当手动将数据输入到表单上的文本框中时,将格式发送到短日期。 (我当前的语言环境将日期定义为yyyy / MM / dd)
一些随机观察(从输入日期转换)
29/12/31 --> 2029/12/31
30/1/1 --> 1930/01/01
到目前为止,它有意义,2位数日期的范围是1930年至2029年。然后我们继续,
1/2/32 --> 1932/01/02 (interpreted as M/d/yy)
15/2/28 --> 2015/02/28 (interpreted as yy/M/dd)
15/2/29 --> 2029/02/15 (interpreted as M/d/yy)
2/28/16 --> 2016/02/28 (interpreted as M/dd/yy)
2/29/15 --> 2029/02/15 (interpreted as M/yy/dd)
它试图扭曲无效日期,以便它们以某种格式有效,但似乎忽略了日期的系统区域设置。只有那些无效的格式(如0/0/1)似乎会产生错误。这种行为是否记录在某处?
(我只想将最终用户引用到本文档中,我对实际行为没有任何问题)
答案 0 :(得分:0)
在 Acc2Date.exe自述文件中,自1999-12-17以来, 29/30分割以这种方式解决了这个问题,作为上一次Y2K更新的一部分:
简介
Acc2Date.exe文件包含三个修改方式的更新文件 Microsoft Access 2.0解释了两位数的年份。默认情况下,Access 2.0解释用户输入或从文本文件导入的所有日期都在20世纪。应用更新后 文件,Access 2.0将处理从中导入的两位数日期 文本按以下方式进行:
<00> 00到29 - 解决到2000年到2029年30到99年 - 解决 到1930年至1999年输入对象属性表的年份,即查询设计 网格或Access模块中的表达式将基于a进行解释 计算机上Win.ini中定义的100年滑动日期窗口 正在运行Access 2.0。
Acc2Date.exe文件包含以下文件:
File name Version Description
---------------------------------------------------------------------
MSABC200.DLL 2.03 The Updated Access Basic file
MSAJT200.DLL 2.50.2825 The Updated Access Jet Engine Library file
MSAJU200.DLL 2.50.2819 The Updated Access Jet Utilities file
Readme.txt n/a This readme file
有关此更新解决的特定问题的详细信息, 请参阅Microsoft知识库中的以下文章:
Article ID: Q75455
Title : ACC2: Years between 00 and 29 Are Interpreted as 1900 to 1929
这篇文章可以在这里找到KB75455(延迟页面加载):
ACC2: Years Between 00 and 29 Are Interpreted as 1900 to 1929
至于2/29/15这里不接受系统默认值为dd-mm-yyyy的情况,因此Access / VBA在解释日期表达式时的创造力有限。