说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在Delphi中避免2000年问题的捷径

HTML文档下载 WORD文档下载 PDF文档下载
在Delphi中避免2000年问题的捷径

---- 众所周知

对于应用软件而言千年虫主要是指2000年跨越问题。也就是当我们采用两位数的省略形式表示年份

在进入2000年时

由于可能将00年理解成1900年,从而引起的日期表达、运算、输出等方面的严重差错,其实大多数操作系统及应用系统在内部格式上都有充分的日期表示范围的

通常都能表示1900-9999年的日期

就连DOS的文件日期中采用可怜的7位二进制数

也能表示1980-2099。所以真正引起众多问题的原因是在于人们习惯于使用两位数年份格式来进行输入、显示甚至运算、比较等

从而引起了世纪跨越时的种种问题。

---- 由于多数语言及数据库系统都支持完整年份的日期表示法。所以解决办法之一是系统中避免使用缩写年份表示法(即2位数年份)。但是对于已经使用的系统来说, 许多系统可能对日期的宽度格式做了既定的统一的规划, 大批量地修改扩充位数显然是一项极为耗时耗力的工作,而且往往顾此失彼,很难不出差错, 所以这并不是一个最佳解决办法。再说在日常生活中人们总是习惯于避繁就简,使用简略的纪年称呼。我相信到了明年后年,人们一定又很习惯地称呼本年为00年、01年。

---- 基于上述两点理由, 我们又不可否认采用两位数年份格式的实际意义。所以保留2位数年份表示法,并寻求避免千年虫的方法, 将有更大的意义。 我们知道,两位数的年份(00-99),只能表示一百年的日期,超过范围则必定引起二义性。通常系统将它约定为1900-1999年,这样自然就无法表示2000年了。如果我们将00-99约定为1930-2029年,也就是对映射的时间窗作一定的移动, 那么对于多数应用都能完全满足纪年的需要,而且不需要改动数据储存和输入输出的格式。

---- 为了实现这一时间窗的移动, 多数系统必须人工干预, 也就是必须在输入或转换2位数年份时强制映射到约定的时间窗中。

---- 那么,有没有更为简捷的解决办法呢?

---- 打开windows98的控制面板中区域设置, 在日期选项卡中有几个参数和2000年跨越有密切相关,一是短日期格式,可以是yy-M-d或yyyy-MM-dd等,它决定系统日期的显示格式。一是两位数年份的变换时间窗,我们可以设为1930-2029.

---- 经过这样设定后回到Delphi中观察,我们发现日期显示是变为4位年份格式。但是当您试着在日期栏中输入'00-1-1'会发现,系统依然变换为1900年1月1日. 问题仍未解决。

---- 经过不断研究,我们找到了答案。原来在Delphi中同样有个时间窗定义变量TwoDigitYearCenturyWindow。比如将它设为60,它的含义就是将今年的年份前溯60年作为时间窗起点,也就是变换时间窗为1939-2038。这样一来问题就彻底解决了。

---- 值得一提的还有另外一个变量ShortDateFormat

作为新开发的系统,最好设为'yyyy-MM-dd'

这样系统就不依赖于windows系统设置的格式,而且统一为整齐的10位宽度,这时既可输入4位数年份又可方便输入两位数年份, 让系统根据时间窗来自动转换。当然对于某些特殊应用中年份可能出现超出时间窗范围的日期,那就一定得完整输入了,就算不小心输成2位数形式,也能立即从系统转换出来的4位年份中看出错误,而得到及时纠正!

---- 综上所述

在已开发的老系统中

可在程序开始处加入以下几行

再用Delphi4.0重新编译,即可消除通常的2000年问题!

DateSeparator := '-';

ShortDateFormat:='yy-mm-dd';

TwoDigitYearCenturyWindow:=80;

---- 对于新开发的系统,最好在程序开始处加入:

DateSeparator := '-';

ShortDateFormat:='yyyy-mm-dd';

TwoDigitYearCenturyWindow:=70;

---- 如此简单的几句, 一定会为您换来无穷的效益!

在“亚马逊商店”出售自己:产品经理这么找工作 【CTO俱乐部第92期】大规模存储与电商架构演化实战分享 刘黎明:PaaS是非主流业务,要与IaaS融合 个人手机游戏开发者之死 为什么苹果的应用审核是个笑话? 程序员性格怪癖是才华横溢的表现,还是危险分子的征兆? JavaScript Source Map详解 8条学习编程的可靠建议 一周消息树:亲爱的GitHub,我们怎么访问不了你? [回顾] 2012年几大编程语言就业趋势分析 研发周报:微软无视W3C 拒绝遵循WebRTC标准 移动周报:夫妻档闯江湖 事业爱情双丰收 当服务器遇见锤子:第六届AWS全球创业大赛落幕 C# DataTable 和List之间相互转换的方法 iPad如何在三年内改变世界 划时代的成果:新DNA存储技术 轻而易举装下世界 谷歌产品设计:Larry Page的魅力革命 开源移动统计工具Countly更新 支持Unity 3D DailyCost传奇设计师访谈,彰显HTML5移动应用优势 如何成为一名架构师? Apache Hadoop集群的安全性架构 Wood Camera开发者访谈:我们如何冲到榜首的 代码审查:程序员内炼之道 Twitter Q1推广告API 收入剑指10亿 Dell:在OpenStack成熟后才会推出服务 一个开源工作者对开源与赚钱的一些想法 宏碁:Windows8仍不成功 Chrome表现令人意外 雅虎发布Q4财报 净利润同比下滑8% 游戏机禁售令起风波,索尼任天堂股价大涨 国外开发者吐槽Facebook Android设计一例 Rovio转向发行业务 将发布新作Tiny Thief 我需检验某表单的文本框中只能有数字,字母等字符,是用javascript做,还是用JSP做? 求好书!!!! 我为何添加不了成员变量 浏览器不能浏览JAVA2写的Applet,那里可有升级包? 还是有关于图片上传,请高手帮忙 加强型的 MSFlexGrid 我认识 KiteGirl(小仙妹) ( 是个好女孩 代表到底是什么东西? 有良知的中国人近来看看! 在vb中做的ActiveX DLL文件如何在vc中调用????? 谁能给我提供磐英810主板的显卡驱动 请问用PDM从数据库中反生成的数据模型,连接到另外的数据库中生成库表,为什么会失败? 请问如何将office2000或office xp 的激活提示除掉 怎么在LINUX下编译JAVA? 请问foxbill:.h文件之前的这些都是什么意思? MEMFILE例子的-----送分帖! 请问如何将office2000或office xp 的激活提示除掉 关于class的问题 我的“路由和远程访问” 出了一个怪问题 用VB设计自己的E-mail系统 这个就是你们说的美女檬檬吗? 我觉得....... 两个小问题————高手赐教! 一个局域网内监控程序,有点问题,请大家帮忙看看! 怎么在LINUX下编译JAVA? ADO数据库简单问题? -128的原码,反码,和补码是什么 ado问题,紧急!高分求救 展望COM,我的COM学习计划!来看看! 借宝地一用,请有良知的中国人近来看看--印尼华人! 拨号上网问题 人民银行网站建设中数据库存储过程的调用 100分求解一个能打印*.frm的控件,提供相关资料的也给分,27号晚5:00结账送分 visual C++ ??? Delphi??? 我憋的难受! 一个编译错误。不知道是什么原因 请问如何使用vbscript删除表的一行(制定行) OracleOraHome81ManagementServer起不来? 关于Tuxedo? 使用apache映射虚拟目录的问题! 谁有VC下类EXCEL的代码 进入windows的目录需要密码的问题 com+组件导出的客户端代理,安装到win98客户机,客户机createObject出错 救急!请问哪里有CrystalReport的书以及源码? QUERY的一对多问题! DLL里面不能修改注册表吗? DLL里面不能修改注册表吗? 急,给高分!!!哪里有非评估版的SQL Anywhere 6 可供下载! DLL的问题 请问能否控制DataGrid编辑时的文本框宽度?? 大虾!大虾!大虾!快过来?这里的问题真奇怪!!SQL2000 装不上,急的我从处男变和尚!解决问提我给分————50分! 强烈声讨那些声讨KiteGirl(小仙妹) 的人!路见不平!!!!!!!! jscript里面有没方法和vbscript里的replace一样 我最近交了个男朋友,不知道他JJ大不大,因为前男友的JJ都很大,我担心现在的男友JJ小了怎么办啊,重外...我最近交了个男朋友,不知道他JJ大不大,因为前男友的JJ都很大,我担心现在的男友JJ小了 龟兔赛跑故事说明什么? HW叠加层是什么意思 在水平地面上放一木箱,木箱中人通过定滑轮用轻绳拉木箱.m箱=20kg,m人=50kg,问至少多大力可拉起木箱. 谁告诉我龟兔赛跑故事的内容?急用!旧版的. HW什么意思 一个50kg人站在20kg的铁架上通过一根绕过定滑轮的绳子拉起自己和铁架 问 需要多少拉力 帮帮忙啊 还顺便告诉我理由非常感谢 龟兔赛跑的故事是谁写的? 几何:设梯形ABCD的对角线AC与BD相交于点O,AB为一腰,AOD 和BOC的面积分别为4和9,求这个梯形的面积要步骤在线等~~~~~~~~~~~~ 已知梯形ABCD的高为H,两条对角线与下底分别成30度和45度,求梯形面积如题 龟兔赛跑的故事告诉了我们什么?在现实生活中有没有这样的问题? 某同学在地面上拉着一个质量为30kg的箱子匀速前进,动摩擦因数为0.5,求出拉力最小值设绳子与地面夹角为a,摩擦力为f,拉力为F 在梯形ABCD中,∠B=45度,∠C=60度,CD=4厘米,AD=2厘米,求梯形ABCD的周长及面积. 同样的物体在月球上的惯性比在地球上小,这句话对吗? 某同学在地面上拉着一个质量为M=30KG的箱子匀速前进,已知箱子与地面间的动摩擦因数为0.5,拉力F1与水平面夹角为45度,G=10M/S的平方,求绳子的拉力F是多少?(答案是100根号2) 男人JJ是什么意思呀? 军牌有什么特征 )如图所示,某同学在地面上拉着一个质量为m=30kg的箱子匀速前进,已知箱与地面间的动摩擦因数为μ=0.5如图所示,某同学在地面上拉着一个质量为m=30kg的箱子匀速前进,已知箱与地面间的动摩擦 是 什么意思JJ 请问有那个大神知道这个军牌GA11111是什么意思啊? 如图所示,拉一个44kg的箱子在水平面上匀速前进,已知箱子与地面动摩擦因数为0.5,拉力与水平面夹角为3...如图所示,拉一个44kg的箱子在水平面上匀速前进,已知箱子与地面动摩擦因数为0.5,拉力 jj是什么意思 10kw发电机,额定转速为1500转,问多少牛顿力能带动? 某同学拉着一个44kg的箱子在水平地面匀速前进,已知箱子与地面的动摩擦因素为0.5,拉力F与水平方向的夹...某同学拉着一个44kg的箱子在水平地面匀速前进,已知箱子与地面的动摩擦因素为0.5,拉 jj是啥? 在月球上,物体有惯性吗? 在四边形ABCD中,AC垂直BD,三角形BOC面积是3,三角形DOC的面积是是6,三角形AOD的面积是4,三角形AOB的面积是多少? 用水平力去推一个木箱,没有推动,则木箱受到的推力和摩擦力的关系是(是大于还是小于还是小于等于 在月球上举重比地球上容易,所以质量相同的物体在月球上比在地球上惯性小, 建筑施工图中bw bf hc MG汽车的中文翻译? 怎么才能把汽车挂上军牌,一定要是军人吗? 300# API5L PSL2 BNS MSSSP-75;BW "晨光" 英语怎么翻译, 力的定义是不是:力能改变物理的运动状态? 梯形ABCD AD//BC AD=1 BC=4 求S1:S2:S3:S4 S三角形AOD=S1 S三角形DOC=S2 S三角形BOC=S3 S三角形AOB=S4最好在八小时内回答 如何把月球和火星的两个卫星改造成地球? 平衡力能改变物体运动的状态,这句话对吗?我觉得这句话是对的,比如一个从高空坠落的物体,此时它没有收到平衡力,当我给它施加一个力使它二力平衡,这样它就由加速下落到了匀速下落,这样 已知AC垂直BD于点O,三角形AOD、三角形AOB、三角形BOC、三角形COD的面积分别为S1、S2、S3、S4,设AC=M,BC=NA、S1+S2+S3+S4=1/2MNB、S1+S2+S3+S4=MNC、S1*S2*S3*S4=1/2MND、S1*S2*S3*S4=MN过程!好的追分 在如图所示的梯形ABCD中,AB=15厘米,AD=12厘米,阴影部分的面积是15平方厘米.求梯形ABCD的面积. 火星、月球与地球的相关疑问!火星上面怎么都是岩石、月球上面也是岩石,那怎么进去里面啊?地球怎么就可以进去呢?地球上面怎么不是岩石?要是全世界人类在火星、月球上面住,不怕掉下来 可以说明力能改变物体运动状态的是?1压力使矿泉水瓶变形2压力使网球拍变形3拉力使弹簧伸长4力把足球踢出去 如图,在四边形ABCD中,∠A=∠BCD=90°,BC=CD,CE垂直AD,垂足为E,求证:AE=CE 火星和月球那个离地球远 如图,已知△AOB,△AOD,△BOC的面积分别等于10,8,25,求四边形ABCD的面积. 如图.四边形ABCD中∠A=∠BCD=90° ,BD=CD,CE⊥AD,垂足为E,求证:AE=CE 运动员用100N的力,把10N的球踢出40M,则他对球做的功?理由! 如图已知O为三角形AOB三角形AOD三角形BOC的面积分别为10.8.25则四边形ABCD的面积为【 】 如图四边形ABCD中角A=角BCD=90°,BC=CD,CE⊥AD,垂足为E求证AE=CE拜托各位大神 写出地球、月亮、火星的对比请对地球、月亮和火星进行对比从科技方面考虑 重500N的人用10N的水平拉力将50N的物体沿水平方向均速拉动10m在此中,拉力所做的功是多少? 直角梯形ABCD中,AB=AD,正方形BEFH边长6厘米,求阴影面积 一个重为100N的物体静止在水平桌面,当用60N的力竖直向上提不动它时,物体所受到合力是______. 已知任意四边形ABCD,三角形AOD的面积是4三角形,三角形BOC的面积是64,求四边形ABCD的面积是多少? 如图,将一平放在水平地面上的均匀正方体木箱的一边从地面抬起,已知木箱重500N,则则至少用多大的力。 一个人用60n的力拉一个中100n的箱子(箱子在水平桌面上)为什么拉不动?请列出受力分析竖直往上拉! 已知平行四边形ABCD的面积为36,三角形AOD的面积为8,三角形BOC的面积为多少? 1、如图所示,一个重为G的木箱放在水平地面上,木箱与水平面间的动摩擦因数为μ,用一个与水平方向成θ角的推力F推动木箱沿地面做匀速直线运动,则推力的水平分力等于:①Fcosθ; ②μG/(cos 龟兔赛跑的故事要真实的 hw是什么意思
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘