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

在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;

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

二十一世纪Windows简史 为什么用户体验和生态系统决定云公司的成败 三星Tizen,路漫漫其修远兮 用户体验是新优势,互联网会受到何种影响? 从GitHub看编程语言流行度 陈沙克:Openstack Horizon Icehouse Blueprint简介 叶琪:Hadoop不是万能的 要明确场景扬长避短 云网融合驱动数据中心技术聚变 给想持续编码CEO的4个建议 盘点开发者最喜爱的十大开源Xcode插件 Cloudera CTO:取代MapReduce 未来会加大Spark等框架投入 中航信资深分析师李洋:自主搭建云平台 助力民航业低成本迎接大数据挑战 安全狗创始人陈奋:借助Hadoop与Spark,欲打造服务器上的360 业界良心:Square开源Viewfinder,25万行代码全公布! 比尔·盖茨:核心业务Bing虽不赚钱,却不能拆分 不可错过,参加第六届中国云计算大会的十大理由 章津楠:未来三年,OpenStack将成为企业去V首选 EMC收购闪存初创公司DSSD,走出联合储存战略第一步 创业失败的七个原因及解决之道 集结号:最受开发者欢迎的跨平台游戏引擎 Cocos2d-x v3.0正式版本发布!优化C++、Lua、JavaScript接口 定价99元首发1万台 360安全路由器启动预约 AMD新产品线曝光 首次实现X86与ARM针脚融合 IT界最难以替代的9个角色 《近匠》英特尔® XDK:从开发、测试到部署,一站式HTML5开发工具 手游云测工具TestBird:测试走入垂直细分领域 阿里巴巴赴美IPO的种种及马云内部邮件全文 盘点EMC World 2014三大看点 2014年Q1:智能手机总销量下滑,WP同比反增119% 着眼无人驾驶技术 英特尔投资日本ZMP公司 移动云服务UCloud快速扩张 成立北京分公司 一个遍历所有局域网内的机器IP,并将一个文件COPY 《三思科学》电子月刊第6期 为什么总是猪? apache装了怎么用? 用vb做个小型数据库,怎么用不了access2000啊??? 关于post问题,请大家帮帮忙!! 怎样取得server的时间日期?????????? asm用宏好还是用子程序好? 怎么在VB中调用treeview,我的VB里面怎么没有这个控件啊? vb6做数据库怎么才能用acess2000???大侠帮我! sty是什么格式的文件?用什么软件能打开?? ---强烈建议开一个创业者论坛,支持者来此!---- 为什么不开个人工智能的专题呢?? 在VC中,如何实现按回车键从一个EDIT控件到另一个EDIT控件的转换????? 哪儿有pl/sql的技术资料以及oracle的专业论坛? C#中难道没有动态数组吗?如果有,怎么声明?怎么改变维数?? 河南的高程在网上如何查分 我快受不了了,D5下的程序在D6下为什么出现那么多的错误?释放也出错,请问这是为什么?谢谢! ??怎么使用ADO存储长字符串? 想用Update函数更新数据窗口。但提示DataWindow Does no have Update Capablity,怎么办? 一个串口及组波的题目~ kao,现在人怎么动不动就精通什么什么的,这么牛?!还精通好几样呢,ft 请问如何取得DBGRID当前选定行的内容,包括该行所有的列。一定给分。 如何写文件上传程序?? jbuilder6的破解!!!!!!!(可用60000天) Apache Web Server + Apache Jserv上System.out.println()的问题 如何取得DBGRID当前选定行的内容,包括该行所有的列。一定给分。 请问电力的《java与XML》翻译得如何呢? 我快受不了了,D5下的程序在D6下用为什么会出现那么多的错误?释放也出错。请问这是为什么?谢谢! ---------------COM---------------- 在读数据文件时如何强制性地使程序中断本行数据的读取,接着从下一行开始读取其他数据 为什么我的outlook可发送,不可接收和发送,注意是可发不可收,不是可收不可发 用JBuilder5开发WebApplication: 如何在WEB-INF目录中建立自已的目录? 一本C++/面向对象好书????(kingofark) 用JBuilder5开发WebApplication的问题? 我讨厌控件,有意者跟进! VB请教 关于打包war文件的问题(用JBuilder5开发)? 耶稣与撒旦比赛写程序 怎么多行注释,怎么创建多个表? 对C++有深刻理解的高手请进!!!!初学者更应进,否则可以困扰你好久..... clsid 问题 如何将VB5工程移植到VB6环境中(很急)!!! 关于封装war文件的问题? 在websphere 下应该将我自己的类放在哪里才能让我的jsp程序访问到??? 关于《c#完全手册》的URL 怎样取得server的时间日期?help!!!11111 在websphere 下应该将我自己的类放在哪里才能让我的jsp程序访问到?? 谁遇到过这种怪现象:我在DW中输入数据,居然DEBUG时不进入EDITCHANGED事件,反倒进入其它事件并且再也不能DEBUG了? 吴文智能帮忙吗? 关于版本的问题 磷的相对原子质量是多少? 关于生物遗传学为什么遗传学认为G 、C比较低时变异度高呢? 元素的原子量与元素的近似的原子量有何区别 如何把这些数据用Excel画出折线图,X轴的数值要一致,比如10,20,30,40,50min...实验时测得数值没有按一定规则.因为还有其他数据,求教程. excel在绘制折线图时,数据标记(圆圈,方块,三角等等)可以筛选出些在图中显示出来吗?原有折线保持不变.这么做主要原因是标记太多,图又太小,会显示不出来的.数据标记如图 什么是元素原子量怎么算? 钾的相对原子质量是多少? 怎样用excel绘制三角坐标系的图怎样用excel绘制三角坐标系的图或者说是有其他是什么软件可以绘制,怎么绘制.怎么绘制.我早都试了.那里头没有三角坐标图说了,是三角坐标的图说白了就是我 问道高二生物遗传基因分离定律题目现有五只猫,按以下条件进行分析,预测定丙猫的基因型,最好选择哪只猫与之交配a.甲.乙.丙猫为短毛,丁.戊猫为长毛b.甲.乙为雌猫,其余为雄猫c.甲×戊→短 钾的相对原子质量 豌豆杂交试验中,去雄的时机是什么时候 关于正弦函数曲线下面积的计算麻烦高人赐教了.画出一个sinx的图像(x从0到pie/2)晕,圆周率打不出来.在A点(pie/2,1)一点做x轴垂线,求从原点到A点函数曲线下的图形面积.(近似于椭圆) 磷的相对原子质量为多少? 急得高二生物题答案(关于基因分离定律)!玉米开单性花,进行异株异花传粉与同株异花传粉,把黄和白玉米隔行种植在一块试验田里,让它们在自然的条件下传粉,结果黄玉米结出的果穗上子 一次函数与正弦函数所围成的图形面积怎么求? 怎么用EXCEL制作一个散点图,然后在散点图上根据散点作一条有函数关系的直线?重点是可以求出该直线的斜率? 在杂交育种时,稳定遗传的品种是指__________.符合要求的良种是指___________.稳定遗传的个体自交,后代是否发生性状分离?_________ 化学书89页K和Mn的相对原子质量(忘拿书了) 1.如果在一个种群中基因型AA的比例为25%,基因型为Aa的比例为50%,基因型aa的比例为25%.已知基因型aa的个体失去求偶和繁殖的能力,则随机交配一代后,基因型aa所占的比例为多少?2.已知小麦抗锈 高二生物:基因的分离定律1.基因型为Aa的植物产生的雌、雄配子间的数量是( ) A.雌配子:雄配子=1:1 B.雌配子:雄配子=3:1 C.A雌配子:a雄配子=1:1 D.雄配子很多,雌配子很少2.给你一粒黄 化学课本后的元素周期表相对原子质量四舍五入吗? 如何用excel把几条函数线画在一张图中 正弦函数图像正弦函数的最低点可以表示成(2kπ-π/2,-1)那么可不可以表示成(2kπ+2π/3,-1)呢?这两个有区别吗? 粉末状铁是什么颜色的? 化学相对原子质量某二价金属氧化物中,金属元素与氧化物的质量比为5;2,则该金属氧化物的相对分子质量为多少! 该地区PKU发病率为1/10000,基因型为Aa的男子与当地一正常女子结婚,生病孩子的概率为多少?PKU是常隐遗传病 即a的基因频率为1/100,即a=1/100,A=99/100.请问这个表现型正常的女的应该 是AA 或者Aa对吧 什么软件可以用来画正弦函数图像 【化学】相对原子质量我国制造的“人造太阳”是用A原子(含1个质子和2个中子)和D原子(含3个质子)聚变生成E原子(含2个质子),获得大量能量.下列说法错误的是( ) A、A原子核外有3个电子B、A 如果在一个种群中,基因型AA的比例占25%,基因型Aa的比例为50%,已知aa的个体失去繁殖能力,在随机交配产生的后代中,具有繁殖能力的个体所占比例为多少?\x0c\x0c\x0c\x0c求详解! 正弦函数的图像有什么特点 关于化学相对原子质量在计算中经常用相对相对原子质量或式量计算,而不是用实际质量式或分子质量计算的原因是 怎样算原子量?公式我知道,问题是中子数为6的碳原子的质量的1/12是多少? 铜的原子量是多少? 关于相对原子质量某元素一个原子的质量为a克,NA代表阿伏伽德罗常数,为什么该原子的相对原子质量数值上是aNA 原子量是怎么计算的? 用气体还原剂还原ag CuO,最终得到bg Cu,若氧的相对原子量为16,则铜的相对原子量为多少?(直接写答案) 化学的相对原子质量A原子与B原子的质量比为a:b,而B原子与作为相对原子质量标准的碳12原子的质量比为m:n,则A原子的相对原子质量为_____麻烦写明过程,急用 计算原子量溶质的质量分数为20%的某二价金属的硫酸盐溶液200克,其中含硫元素8克.此二价金属的原子量为 铜有两种同位素63Cu和65Cu,前者原子量为62.9296,后者原子量为64.9278,前者所占百分比为69.2%,计算铜元素的原子量. 在excle中,利用什么函数公式可以使下面两图的计算成功?请以这张图片为准,第1张图片的第2个工作表少写了备注, 金属的相对原子量计算问题有一题是这样的7g某种金属和稀硫酸发生反应,生成了19g的金属化合物.并生成了氢气,则金属的相对原子质量为多少.( )A.24 B,40 C.56 D.65我希望大家帮我解决问题后,能 如何做正弦函数图像?麻烦举个例子, 关于遗传学与进化的问题,最好是专家级的关于“哈代-温伯格平衡”的矛盾.假设在一个种群中A和a的基因频率都为50%,种群足够大,不考虑自然选择不考虑基因突变等等总之在完全理想状况下, 在excel作图中,怎样使x轴从零开始,Y轴不是,就是希望图像和y轴有交叉,附图 正弦函数图像问题如下图为正弦函数y=A sin(ωx+φ)(A>0,ω>0,|φ| 1、如果红色豌豆花对白色豌豆花是显性,那么两株开白花的豌豆杂交,后代(单选1分)A、一定都开红花 B、一定都开白花 C、可能都开红花,也可能都开白花 D、红花和白花各50% E、红花占75%,白 excel作图问题 如何将两列数值分别作为图的X轴和Y轴网上的教程都是选中两列,一作图自动作为XY轴,但我的excel不管怎么操作都是将两列分别作为Y轴,X轴是编号,就是说会有两条曲线,很奇怪,不 如何计算一种元素的原子量? 生物竞赛遗传学如果还多年生物竞赛的试卷以及答案解析,可发给我吗, 怎样在excel中作图,要求左右两个Y坐标轴,图中两个不同系列.想做一个图形,有两组数据,对同一组数据作图,但是这两组数据相差较大,因此项设置两个Y坐标轴,两者的最小刻度不一样,这样画出来 目前发现的原子量最大的元素是什么,理论推算的不算,以实际出现(人工的也算)的为准 一种碳原子和镁原子的相对原子质量分别是12和24,则碳原子和镁原子的质量比是A 2:1B 1:2C 1:24D 24:1 用EXCEL作图,已知相关数据,在坐标轴上做出直线图.已知(x1,y1)、 (x2,y) 、(x3,y3)...然后在EXCEL中自由生成一条直线,当然这些数据不在一条直线上,有点上下波动.我也不知道自己有没有说清楚,不 正弦函数图象的性质函数y=sin2x+cos2x的单调递增区间是______,x=______,y有最大值______ EXCEL函数IF的问题:怎么写公式?如果B13是“纱窗”,并且P13的值 锂的相对原子量 元素原子量和原子原子量怎么区分啊说的简单点,但要说对哦 Excel函数if的问题:公式怎么写?如果B13是“纱窗”,并且P13的值 K的相对原子量是多少 正弦函数的图象与性质
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn