开放式线性周期日历系统

申请号 CN98120317.5 申请日 1998-10-05 公开(公告)号 CN1213805A 公开(公告)日 1999-04-14
申请人 周明; 发明人 周明;
摘要 本 发明 以线性日历及其日期结构、日期数据为 基础 ,提供一种创建、使用、管理周期日历系统的方法。该方法主要针对各种 电子 时钟日历装置,以及具有时钟日历装置及日期 数据处理 功能的各种通用及专用数字 计算机系统 。本发明旨在克服单一动态、静态日历装置的局限性,实现使用者对线性日历的有效使用,同时方便地满足使用者对日历使用的私有要求。本发明允许用户在系统允许的范围内随意编制、 修改 、转移、删除自己定义的日历。本发明特别可以用来解决数字计算机系统现行日期装置使用线性日历——公历的困难处境。
权利要求

1.一种用于构建、管理、操纵基于一个线性日历的多个周期日历的系统--开放式线性周期日历系统,其特征包括:用于提供周期日历创建基础数据的线性日历日期数据库及其日期发生和维护的装置;以线性日历结构及其日期数据为基础,创建(附图3)、修改(附图4)周期日历的装置;用于为所述周期日历日期数据间提供日期转换的装置;多周期日历系统中日历对应虚拟时钟启动(附图5)、关闭(附图8)的装置;多个动态周期日历按其对应的虚拟时钟实时日历刷新的装置(附图7);多周期日历系统环境,周期日历及其相关资料的管理装置;所述多周期日历系统与外部系统环境交换日期数据及日期资料的装置。
2.权利要求1的系统,其特征在于所述用于提供周期日历创建基础数据的线性日历日期数据库,是指该数据库中存有作为线性日历的一个子集的完整日期数据,该数据库只限于系统各功能访问,用户不可直接读取;所述线性日历日期结构决定本系统周期日历的日期数据结构,特别是周期日历月、日日期数据部分的结构;同时决定系统其它功能的具体日期数据算法;线性日历日期数据库日期数据是可重入的或者说是可更新的。
3.权利要求1的系统,其特征在于所述周期日历创建装置包括以下步骤:按用户输入取得周期日历需要用户定义的参数的装置;检测周期日历定义的合理性的装置;初始化周期日历其它参数的装置;保存周期日历全部参数的装置。
4.权利要求3的系统,其特征在于所述周期日历需要用户定义的参数包括:建立周期日历特有周期日历年份起始值;周期年份的周期取值范围;周期日历当前日期及当前虚拟时间;周期日历的版本归类,版次设置;周期日历元年与线性日历年份的对应等参数。
5.权利要求3的系统,其特征在于所述周期日历创建的装置在用户定义周期日历参数方面可以完全开放或部分开放。
6.权利要求1的系统,其特征在于所述周期日历日期数据转换的装置包括以下步骤:将源周期日历日期年份数据代入关系YN源=Y0源+N源,求出源周期日历日期所对应的线性标准日历日期年份数据Y源;由Y源加源周期日历月日数据部分取得源周期日历日期所对应的线性日历完整的日期数据D源;由源日历虚拟时间减去源日历虚拟时间与目标日历虚拟时间时差求得目标日历源周期日历的虚拟时间T目;当T目小于“0“时,在线性标准日历库中取紧邻D源上一个日期数据即得目标周期日历日期所对应的线性标准日历完整的日期数据D目;当T目大于等于“24“时,在线性标准日历库中取紧邻D源下一个日期数据即得目标周期日历日期所对应的线性标准日历完整的日期数据D目;当T目大于等于“0”且小于“24“时,D目即等于D源;取D目的年份数据Y目,并由关系YN=Y0+N求出目标周期日历日期年份数据N目;检查N目是否在周期日历年份数据合法取值范围内,确定源周期日历日期数据到目标周期日历数据的可转换性;最终转换结果为N目加目标日期的月日数据部分。
7.权利要求1的系统,其特征在于所述周期日历虚拟时钟构造的装置是指借助物理实时时钟及周期日历虚拟时钟与物理实时时钟的时差实现的周期日历逻辑时钟--周期日历虚拟时钟;虚拟时间为实时时钟时间加虚拟时差。
8.权利要求1的系统,其特征在于所述虚拟时钟的启闭是一项相关于周期日历动态日期刷新的依据。
9.权利要求1的系统,其特征在于所述依据虚钟刷新周期日历的装置包括:依据周期日历参数及关系YN=Y0+N,从线性日期库中,提出线性日期数据,并生成周期日历日期的装置;依照虚钟变动达到24小时刷新动态周期日历的装置。
10.权利要求1的系统,其特征在于所述多周期日历管理的装置包括:周期日历状态变换装置;动态与静态分类管理装置;不同周期日历数据及相关资料的分类管理装置;周期日历相关数据对于所述日历系统的逻辑或物理上的输入、输出管理功能装置。
11.权利要求1的系统,其特征在于所述系统与外部环境交换日期数据及日期资料的装置,是指如果两环境的日历系统均采用本发明所述的方法建立日历及使用管理日期数据,则交换与同一周期日历系统各日历间的日期数据交换相似;如果被访问的环境是一个非本方法建立的日期环境,则本功能按如下假设进行日期数据由非本发明环境向本发明系统转换:即假设所访问的环境日期数据为缺省周期日历日期数据,从而使被访问环境日期数据成为本日历系统可理解的日期数据。
12.一种用于构造、使用、管理周期日历及相关日期数据的方法,其特征包括:用关系YN=Y0+N实现本发明所述周期日历与线性日历年份的对应;所述周期日历与线性日历采用相同的月日日期数据结构;用关系YN=Y0+N实现周期日历与线性日历年份转换;关系YN=Y0+N是实现周期日历日期数据间转换的基础;用关系YN=Y0+N,实现不同周期日历环境及不同使用者之间的交流通讯;用关系YN=Y0+N实现各级虚拟机的线性周期日历功能或其组合。

说明书全文

开放式线性周期日历系统

发明涉及一种日历日期系统及电子日历系统,本发明尤其涉及使用日历、日期装置的各种专用计算机系统和一般资讯系统。

众所周知,不同的历法产生不同的日历,而日历由与之对应的具体日期构成。从世界范围看,历法特性主要分两类:①以公历为代表的线性日历。其特征在于其年份数据具有连续、单调、递增性;②以农历为代表的周期日历。周期日历的例子实际上随处可见,如国历、人生日历、婚历等等一些范围不同的私历,只是这些特定日历在大多数时候只有极少数人使用,或者个别人无意地使用。造成这种状况的主要原因在于人们总习惯于使用日历产品而从不自己制订历法,编制日历,这时人们似乎忘记,历法与人类社会的其它法规一样,具有“人工”这一特质,人可以建立、修改、废弃。

现有的日历装置、产品和系统,从其使用特性上看,也分两类:①静态日历产品。这类产品以纸介为日历载体,这类日历日期不能显式地告知使用者,什么日期是当前日期,使用者需要根据自己的日期经验来加以判断今天是几月几日这个问题,并不是所有人任何时候都不会说错的,既使他手头有一部静态日历。静态日历集中提供了大量日期数据(相当长时间范围的日期数据)人们可以很快地翻阅过去、现在、未来的日期数据。②动态日历。这类日历产品以计算机硬件固件软件或其组合为载体,如计算机日历装置、电子万年历等。其特点在于当前日期以显式提供,并随时间自动改变,大多数这类产品并没有保持静态日历具有的随意翻阅的好处。

第三类日历产品,即同时具有静态、动态两种特征的日历也是有理由存在的,但却很难见到。此外,现有的日历产品,几乎都不具有相对于使用者的开放性,使用者只有使用的权,而不能对其进行修改,更不能基于这些产品方便地制作自己的日历。

随着人类科技进步,特别是信息处理技术高速发展,基于计算机的各种资讯系统在全球范围的广泛而深入的使用,国际间资讯交往已日趋便捷、频繁,各部、组织对作为各种资讯重要线索的日期及相关资料的一致性的要求既自然又必然,线性日历——公历在上述进程中,已将人类的其它日历文明远远抛在后面,在人类各项生活中,公历都处于统治地位,即使在有几千年周期日历——农历文明的中国,农历也已暗然褪色。各种官方及正式文书无不以公历为准,究其原因除信息科技主要由西方人领导而自然使用公历外,以下所述的公历与农历的两个主要差异也是重要原因:①农历文字日期形式不便直接参与日期运算特别是日期数据数学计算。②周期限制。农历六十年一甲子,或者说六十年为一日历周期。农历从日期起始到结止,只是在六十年日期范围内具有线性日历的单调、连续、递增的特性,或者说无歧义性,这种特性是方便的日期数值计算的基础。正是由于存在这一缺陷,类似农历的周期日历无法满足许多年限要求较宽的应用。

但是这并不等于说线性日历能排除一切周期日历而独撑大局,线性日历并不是完美功效的化身,计算机Year2000年问题就是有力的证明。

Year2000问题的详细背景,迄今已广为人知,此处不作详述,下面说明的只是Year2000问题及现行解法所存在问题的精要:①现行的两位年份日期,在日期及日期资料使用方面存在两个问题:其一是向后不能超出1900年;其二是向前不能跨越2000年。其中前者从两位年份使用的第一天就已经存在了。这种情形与现行系统提供的具体设置有关。

②四位年份格式向前将在公元10000年时,使资讯系统重新回到现在的Year2000问题上,这说明现行的解法付出巨大代价,只是推迟发生问题的时间,而没有从根本上解决Year2000问题。

③从公历日期的线性特征来看计算机要在任意大的范围内使用处理日期数据,必须使用不定长日期数据结构。Year2000问题从反面说明日历、日期问题已经不是一个人们习惯思维中的简单问题了。日历、日期问题是如此基本、基础,却又造成Year2000这样大的人类共同的技术上的困难,在人类文明历史上,也属史无前例了。

本发明的目的简明的说就是提供一种完备的技术方案,从根本上解决人类在日历、日期方面所面临的上述问题。

本发明公开了一种日历系统,该系统针对的是以提供时钟、日历为主要功能的各种电子时钟日历装置,特别是具有日历装置及日期数据处理功能的各种通用及专用数字计算机系统。本发明所述系统有一种方法,用于提供周期日历创建基础数据的线性日历日期数据库及其日期发生和维护的方法;以线性日历结构及日期数据为基础,创建、修改周期日历的方法;用于为所述周期日历日期数据间提供日期转换的方法;多周期日历系统中日历对应虚拟时钟构建、启动、关闭的方法;多个动态周期日历按其对应的虚拟时钟实时刷新日历的方法;多周期日历系统环境,周期日历及其相关资料的管理方法;所述多周期日历系统与外部系统环境交换日期数据及日期资料的方法。

本发明所述的日历系统及本发明所公开的管理、操纵该日历系统的方法,都将在以下的开放式线性周期日历系统总体设计方案中进行详细的阐述,本发明所述系统与本发明所公开的方法相辅相成,该日历系统主要功能由所公开的方法决定,系统的主要技术特征由所述方法产生,而所述方法则通过该日历系统及其相关功能得以具体实现。应当这样理解本发明所公开的方法及其涉及的一般原理与该方法的具体实现,共同构成本发明所公开的完整技术方案。

需要特别说明的是:本发明所公开的开放式线性周期日历系统的总体设计方案针对的是多周期日历系统,即所述系统由多个本发明所述方法可能产生的各种周期日历组成。实际上,这种完整的、复杂的日历系统,与现行的日历系统缺少可比性,因此,首先说明本发明的性能及技术特征,而后面的本发明的最佳实施例中,将详细说明一个基于特定的线性日历——公历的单一线性周期日历系统。由于该实施例所述系统的单一周期日历特点使得在实现上并不需要引入多周期日历系统所述的全部方法,从而单纯的多,但是在体现本发明最显著方面及明显的技术效果上都积极的多。

需要特别指出的另外一点是,从一般原理上,本发明不排斥任何一种具有线性特征的日历及相应日期数据作为本发明所述日历系统的基础数据,但事实上,本日历系统是一项针对公历使用的发明。这是基于如下认识:只有作为本日历系统基本日期数据的线性日历有广泛的使用基础,本周期日历系统方能真正体现其使用的优点和其实用价值。因此,在没有特别声明的情况下,可以将本发明所述的线性日历直接用线性日历的特定的、典型的代表——公历来替换和思考。

以下将用书面并结合附图,对本发明所述的开放式线性周期日历系统作充分、细致、深入地说明、解释,以求用最好的方式阐明本发明的技术特征,明了本发明的最显著方面以及本发明的目的、性能、优点和其它特性。

本发明在数字计算机环境中的具体实现主要涉及两个方面:其一,日历系统处理的数据。指各功能模对应的输入、输出。其二,处理数据和实现日历系统功能的程序或代码。本说明书中将仅给出程序流程或程序功能的要点。此二者,实际上很难在下述说明中截然分开,而只能有所偏重。

首先,说明本发明所述日历系统的主要数据、数据文件及其结构。

A.线性日历日期数据库。该数据库准确地说是特定线性日历完整日期数据的一个子集,而不是全集。该数据库可被日历系统相关功能访问。如周期日历创建、日期转换、日历阅览等等。该数据库数据对本日历系统而言是可重入的,或者数据库对应的装置是可升级的。这样做不会影响日历系统各功能模块的正常运作,但对本日历系统的使用者来说,需要考虑到更换了数据库是否会影响用户已定义的周期日历的正常使用。因为在本日历系统中周期日历的日期数据实际上只是在使用时才由相关功能根据线性日期数据库临时生成。从这一点说,线性日历是本日历系统的最重要的基础数据。对于本日历系统而言,线性日历是用户永远不能直接使用的,自然也就不存在随时间变化刷新日期的问题。所以,在本发明所述系统中该线性日历为一静态日历,这一点是不能改变的。

将该日期数据库与物理实时时钟装置一起集成在固件中提交本日历系统使用,是一种可能的较好选择。

B.一部可校对的物理实时时钟及相关处理程序。其校对功能可以置于日历系统之外,同时该时钟将保持现行数字计算机实时时钟的大部分功能、特点,并以不与本发明所述的日历系统所采用的方法冲突为原则。与线性日历数据库相似,本发明所述的日历系统并不支持用户直接使用物理实时时钟,而是提供给用户与日历相关的虚拟时钟,这些虚拟时钟是以物理实时时钟为基础的。另外,在时钟管理程序中,本日历系统要求在时钟中断程序中新增虚拟时钟刷新等功能,这些将在以后说明。

C.日历参数表。该参数表集中管理各周期日历的全部参数。一部周期日历的创建,实际上就是周期日历参数的定义,有了这些参数在本日历系统看来,周期日历就是明定的了。日历参数表的主要数据内容为:①周期日历名称及编码。名称分简名和全名;②周期日历的周期年份起始值及周期取值范围。该范围可以选自然数列的任一区间(对线性日历指定为公历而言);③周期日历元年所对应的线性日历的年份;④周期日历的当前日期;⑤周期日历对应的虚拟时钟与物理标准实时时钟间的时差;⑥用于周期日历刷新功能的天数计数器;⑦该周期日历相关的日期资料文件指针等(如日历注释、日期资料);⑧周期日历版本分类号及版次流号。周期日历版次按元年对应的线性日历年份数值大小排序。

D.日历注释文件。该文件集中存储各周期日历的特别日期的注释信息。这些信息的例子如:生日、国庆日等。

E.日期资料文件。该文件将为每一部有日期资料需求的用户日历专设。一个日期资料文件对应一部周期日历相关的日期资料。

F.日历状态表。该表集中管理各周期日历的状态信息,对周期日历的活跃、潜状、休眠等状态进行分类注册,从而保证在多周期日历系统环境下使用管理日历的方便、安全、高效。日历状态表的一种可能的结构是由N行三列构成,第一列表示活跃日历,第二列为潜伏日历,第三列为转移日历。

上述C、D、E、F均以永久磁盘文件形式被系统存取和管理,并且都应有相应的备份文件。

另外,本发明所述日历系统还涉及一些临时文件、变量及数组,如:日历刷新优先级队列、活跃日历存在性变量等,这些将在各相对功能中作必要的说明。

以下为本说明书附图:图1是用于描述一个可用于本发明的计算机系统的系统结构框图及计算机系统的多级分层组成。

图2是本发明所述的开放式线性周期日历系统的各主要子系统及主要功能逻辑框图。

图3是周期日历创建功能逻辑框图。

图4是周期日历修改功能逻辑框图。

图5是虚拟时钟启动功能逻辑框图。

图6是活跃周期日历对应的虚拟时钟及当前日期初始化功能逻辑框图。

图7是虚拟时钟及其对应日历刷新功能逻辑框图。

图8是关闭一个正在被实时刷新的日历及对应的虚拟时钟功能逻辑框图。

图9是周期日历日期数据间的转换功能逻辑框图。

图10是两周期日历日期数据大小比较功能逻辑框图。

现在参考附图进行讨论。见图1A,图1B。

本发明和计算机系统一起使用,图1A是冯·诺依曼机的典型结构。几乎目前所有的数字计算机在原理上,都遵从该结构。本发明所述方法至少从原理上适用于所有以冯·诺依曼机为结构的数字计算机,而不是局限于现行的某种机型或某类系统。从图1B的计算机多级层次结构上看,本发明几乎涉及虚拟机的各个层面,只要该层面要求日期功能。

参考图2继续讨论。图2是本发明所述的日历系统的主要功能的逻辑框图,其中步骤206、212将在附图3、附图4、附图9、附图10作详细的说明。而步骤202、步骤204、步骤208、步骤210、步骤214、步骤216则以书面进行说明解释。

再参考图3继续讨论。本发明所述日历系统,是一个多周期日历系统。也就是说该日历系统理论上允许用户在线性日历数据库提供的日期数据的范围内,创建任意多个周期日历。周期日历日期数据以线性日历为基础,因此,其合法性受该线性日历数据制约。具体地说,本系统所提供的周期日历其结构并不是任意的,它们与线性日历的差别仅仅在于年份数据取值范围的约定上。周期日历有开始与终止,从而构成周期;而真正意义上的线性日历则没有日期上限,约定了开始并不限制终了。本发明所述的周期日历除年份具有周期特性外,其月、日数据完全与线性日历等同,因而一旦建立了周期日历与线性日历年份的一一对应,周期日历日期数据就完全确定了。周期日历完整的日期数据可以理解为,将一段线性日历日期的年份数据用周期日历年份替代得出。这一段线性日历日期数据必须在系统提供的线性日历数据库中,这个限制是明显的。当然,线性日历日期数据库,也应可以在必要时更新。这项功能的使用必须严格加以控制,因为它会影响一些在原数据库基础上的合法周期日历。下面是创建功能的具体步骤:步骤302,该步骤涉及本发明所述日历系统对日历名称的管理。不同的日历名称对应不同的日历。日历名分简名、全名两种,并且本日历系统分配一个唯一的编码标识给每个周期日历,因此,本质上本周期日历系统允许同名日历存在。

继续讨论步骤304及306,命名一个日历之后,就定义该日历的参数,周期日历日期数据完全由周期日历参数决定。值得注意的是,本系统不但允许同名日历存在,而且允许参数完全相同的日历存在,从私历的观点看,这一点在客观上是可能的。如个人生卒的私历。

步骤308,同名的不同周期日历分两类,一类为相关的同名类(由资料相关引起),这类日历的特点是其它参数相同,仅周期元年对应的线性日历日期年份不同。这类日历以版本加以区分。在同版本类中,不同的周期日历再分版次,版次由元年对应的线性日历年份唯一标识,并应在参数表中中加注版次流水号。在同一版本类中,参数完全相同的日历是非法的,即元年对应的线性日历年份不同是必要的。步骤308提供给用户在定义日历时,对命名日历是否已经存在进行考察,保证用户在使用同名日历时是真正有意识的。当然,用户也可以忽略对日历同名的考察,直接转到步骤322。

步骤310结合步骤312,提供用户对同名日历的三种处理:其一,返回命名步骤302;其二,忽略同名到步骤322;其三,将同名日历归入某一版类中,进行步骤314。

步骤316、318、320。是对同名日历的版本,版次管理。日历系统借此实现一类日历的严格相关。

步骤322。是确认创建或退出选择。

步骤324、326按参数定义完成日历创建。

参考图4参考图4继续讨论。本附图4给出的是周期日历修改功能流程图,其中涉及周期日历的所有的用户定义参数的修改,日历的修改与创建一样都是针对日历参数表进行的。

参考步骤402、404。这两步体现了修改与创建的根本差异,创建是从无到有,修改则是针对现有的日历。

步骤406,提供返回日历名和退出选择。

步骤408、410,用编辑功能为用户日提供历参数表的相关数据项,以便对指定日历进行修改。

步骤412,414,416,418,提供版本归类功能。日历系统对这一日历属性的管理要严格一些,故不提供用户简单修改功能(从归类中分离可简单由参数表人机交互实现,而归类不行)。

步骤420。提请用户对其修改的确认,并且在不确认情况下,提供出口步骤422,返回或退出修改。

步骤424、426,完成修改,即按已进行的定义修改日历参数表中的相关参数。

参考图5继续讨论,本功能是虚拟时钟启动功能流程图。具体包括:步骤502,504,判断系统虚拟时钟刷新优先级队列是否存在;步骤510,当虚拟时钟刷新优先级队列不存在时,首先启动虚拟时钟及日历刷新功能;步骤506,提供虚拟时钟刷新优先级队列存在时的两种情况的处理;步骤508,直接取得该虚拟时钟对应的虚拟时钟刷新优先级队列级数数值;步骤512,514,当不能将该虚拟时钟归入已存在的虚拟时钟刷新优先级队列时,将虚拟时钟刷新优先级队列增加一级,并将新增优先级队列与原队列一起重新进行优先级排序;步骤516,将虚拟时间写入指定的虚拟时钟刷新优先级队列队尾;步骤518,生成虚拟时钟对应的周期日历对应的月度日期数据表供前台活跃日历动态刷新显示;步骤518,调用虚拟时钟及活跃日历当前日期和当前时间初始化功能。

再继续参考图6,附图6是活跃周期日历对应的虚拟时钟及当前日期初始化功能逻辑框图。以下分步骤进行讨论:步骤602,从日历参数表中取得当前日历虚拟时钟与物理实时标准时钟时差;步骤604,计算出当前日历虚拟时间,并读寄存器天数计数器;步骤606,取日历参数表天数计数段值;步骤610、608、614、612、616,根据虚拟时间数值同时考虑寄存器天数计数器和日历参数表天数计数段值,校准虚拟时间,计算当前日期天数偏移;步骤618,将虚拟时间写到活跃日历虚拟时钟优先级队列该虚拟时钟对应的虚拟时间段;步骤620,取日历参数表中该周期日历当前日期数据,并由年份转换关系得出该周期日历对应的线性标准日历日期年份数据,用该数据加周期日历原当前日期数据月日数据部分,再加天数偏移,求出周期日历当前日期数据对应的线性标准日期完备数据;取该日期的年份数据转换得出周期日历当前日期年份数据,再加对应的线性标准日期的月日数据部分即得出完备的周期日历当前日期;步骤620,将周期日历当前日期结果显式地标注在该日历前台月度日历表中。

参考图7继续讨论,图7是虚拟时钟及其对应日历刷新功能逻辑框图。具体步骤如下:步骤702、704,以活跃虚拟时钟当前时间加虚钟最小时间单位刷新各级时钟优先级队列列表之虚钟当前时间数据;步骤706,判断最高优先级虚钟当前时间是否到达24小时,到达则进行步骤708,否则结束;步骤708,刷新最高虚拟时钟优先级队列所对应各日历,并在前台月度日期表显示当前日期;步骤710,判断各刚被刷新日历的月度日期表是否已被用尽,用尽则执行步骤712,否则转到步骤714;步骤712,完成周期日历新一个月度日期数据的生成;步骤714,将刚被刷新的最高虚钟日历级别降至最低级,其余者均上升一级。

参考图8继续讨论,图8是关闭一个正在被实时刷新的日历及对应的虚拟时钟功能逻辑框图。具体步骤如下:步骤802,将该虚钟及对应的数据项从虚钟所处的优先级队列列表中删除;步骤804,判断被关闭虚拟时钟所在优先级队列中是否还有其它成员,有则转到本功能结束,否则执行步骤806;步骤806,将该级列表从系统中删除;步骤808,判断是否还有其它活跃日历及虚种存在,有则转到步骤812,否则执行步骤810;

步骤810,修改活跃日历存在状态标志,使该标志对应系统不存在活跃日历;步骤812,对剩余各优先级队列进行优先级重排序。

参考图9继续讨论,本图为周期日历日期数据间转换功能流程图。该图已在各步骤中有较细致的说明,此处特别指出的是周期日历间虚拟时钟时差可能对转换结果造成影响,这是合时间周期日历日期数据间转换的特点。

最后参考图10,本图是两周期日历日期数据大小比较功能流程图。该功能是周期日历日期数据运算的范例,体现了具有相对虚拟时钟的周期日历日期数据的运算的特性,及其与单一日历单一时钟系统相比较的复杂性。

以下各功能将用书面说明:A.日历系统初始化。该功能主要任务是初始化系统相关变量,日历和虚拟时钟刷新创建优先级队列列表,定位系统各主要数据文件,同时依据日历状态表及日历参数表对活跃日历执行“激活”功能调用。系统首次运行时活跃日历仅为系统缺省设置的周期日历,在使用公历为线性日历的情况下,系统公历可能需要用户重新设置当前日期及时间。在日常运行情况下,初始化功能则是根据日历状态表中保留的上次退出系统时的活跃状态日历进行恢复现场,使系统活跃日历及时钟处于正确的当前日期及当前时间,并开始日历及虚拟时钟动态刷新。系统初始化的另一项特别功能是周期日历日期达到该日历周期上限的预警功能,并且对这类日历进行注册登记。对于已经“到期”的日历可以采取的处理方式有:①使之不能够变成动态日历;②将该日历当前日期自动修改为周期日历元年1月1日;③根据用户设置自动创建相应的新日历版本,即修改元年与线性日历的对应年份,同时对原周期日历日期资料与新版本日历的交叉部分进行相应的转换处理,并将非交叉部分保留在原日历日期资料中。系统初始化还有一项重要工作是处理非正常结束日历系统运行造成的系统数据的破坏,这项工作主要涉及当前日期的设置,天数计数器及日历参数表中天数计数段的修改。

B.日历系统正常退出功能。该功能主要按如下步骤执行:①按天数计数器数值及当前实时时钟时间对各潜伏日历进行日期刷新;②将天数计数器清零;③将活跃日历当前日期写入日历参数表该日历当前日期段;④将各系统文件如日历参数表、日历状态表等存盘;⑤清除所有系统临时数据文件;⑥在日历参数表中将各动态日历所对应的天数计数段赋零值;⑦将系统非正常退出状态标志改写为正常。

C.设置周期日历当前日期及时间。该功能只对活跃日历有效,并完成接受来自用户的输入及写日历参数表相应的日历的当前日期段和时差段的工作。

D.日历工程。该功能由以下装置组成:日历阅览器、日历加工器、日历资料管理器。这些功能通过周期日历与线性日历间的转换关系生成相关的周期日历日期数据,并对这些数据进行相关的处理,从而体现了本发明所述日历系统的静态日历处理能力。以及静态与动态日历在本系统中的相互转化,协调统一。上述三项功能可以考虑用现有的具有图形用户开发接口的高级语言工具,或者DB工具方便的实现。由于日历工程各子功能均以静态周期日历日期数据为处理对象,故无需考虑时钟问题。

需要特别指出的是,日历加工及日历资料管理均需得到日历阅览器的支援。

a.日历阅览器。本功能的输入条件为要翻阅的日历名及该日历日期数据范围。本功能根据输入条件访问日历参数表,取得该日历参数,并由关系YN=Y0+N计算条件对应的起始线性日历年份,由该年份数据加上条件中给出的起始日期的月、日数据,构成线性日历日期数据的起始日期。按此日期及条件给出的日期范围,由线性日历数据库中连续读取满足条件的日期数据,然后将这些日期数据由关系N=Y0-YN转换成周期日历日期数据,存入一临时文件,再用编辑功能打开该文件,该编辑窗的格有很多可能的选择,此处不作详述,因其并不构成本功能的实质。日历阅览器的另一项功能是向其它输出设备输出日历日期数据,如打印设备。对于输出功能更复杂一些的要求,涉及同时输出该日历的相关日期注释,以及多个周期日历对照输出和输出版式编排。

b.日历加工。日历加工是对周期日历私有性的肯定,具体说就是对所述周期日历一年当中的任意一天或多天进行文本注释,以标明该日期的特殊意义。显然这种具有特殊意义的日期在多数情况下只是对少数用户而言的,如:生目、国庆日。该功能需要调用日历阅览器提供一年的日期数据,并根据日期选择对话框及注释编辑对话框,将选定的周期日历日期连同相关的注释一起写入日历注释文件中,对于有日历注释的周期日历,在动态刷新显示及静态输出时都应考虑将日期的注释与日期数据一起输出。

c.日期资料管理。本功能也是日历阅览功能的进一步扩展。与日历加工不同,本功能提供的是一种以日期为线索的资料分类服务,日期是这些资料的时间属性,在可转换的日期范围内这种资料可以为不同周期日历共享。简单的例子有:日期对应的历史事件、项目的日程安排等,可以看出本功能可以进一步扩展为结合动态日期功能对项目进行实时监控。本功能在实现上,同样要求一个日期选择对话框和与之对应的日期资料编辑对话框,并能够将新增或删改的日期资料及与之对应的日期一同存入该日历的日期资料文件中。不同周期日历间资料的共享借助于本日期资料管理中的“资料转移”功能实现,该功能需要得到周期日历日期转换功能的支持,并且能够实现将源日历日期资料与目标日历日期资料的合并,在日期资料的转移过程中可能会造成日期资料的正常丢失,这是由源周期日历与目标周期日历的相关程度决定的。日期资料的输出自然也是日期资料管理的功能之一,其特别之处在于需要考虑多个周期日历日期对照的输出形式。

E.日历管理。在多周期日历系统环境中,周期日历可以以下状态存在:活跃、潜伏、转移。前两者为动态日历,后者为静态日历。与这些日历状态相应的功能即为本日历管理中所提供的激活、隐藏、休眠及唤醒功能,这些功能主要由多周期日历系统本身的特性引发。支持这些功能的主要系统数据结构为日历状态表。日历的不同状态和状态的变更,完全由该日历在日历状态表中的参数及对表中参数的改变决定。与日历创建功能对应的是删除功能,该功能以删除方式废弃一个或多个用户定义的周期日历。由对日历管理各子功能的功能描述可见,日历管理各功能的程序实现应该不算困难。如果日历状态表第一列表示活跃日历,第二列为潜伏日历,第三列为转移日历,那么,将一活跃日历变为潜伏,只需将该日历编码,从第一列删除,再写到第二列队尾即可。

以下为日历管理的各子功能的功能说明。

a.激活功能。该功能指将处于潜伏状态的周期日历变成活跃状态,从用户的观点看就是将一周期日历(动态的)由后台不可见的变成前台可见的。该功能调用虚拟时钟启动功能,并在日历状态表中改写相关日历的参数状态。

b.隐藏功能。本功能与激活对应,使处于前台的活跃日历变为后台的潜伏日历,该功能调用虚拟时钟关闭功能,并修改该日历状态。

c.休眠和唤醒功能。这两项功能也是一对互逆的操作。本发明所述的日历系统借此实现日历系统与外部交换日期数据及相关资料,使系统更加开放,且杂而不乱。休眠功能完成日历从潜伏到转移的改变,而唤醒则使日历由转移态变为潜伏态。本日历系统还以这两项功能实现日历的动态和静态的转换。休眠和唤醒除了改写日历的状态参数外,还负责管理周期日历相关数据资料对本日历系统的输入输出。具体地说,系统借助于这两项功能实现周期日历日期数据及其相关资料在逻辑上或物理上与本发明所述的动态日历或日历系统分离。该功能用存档和调档来理解更形象一些。休眠和唤醒管理的是完整的日历系统数据,包括日历参数表、日历资料文件、日历注释等。这一对功能有两种选项:逻辑的和物理的。体眠和唤醒隐含的另一种功能是在单一周期日历环境中解决周期日历日期数据间可能存在的冲突,使该环境同样可达到对线性日历的使用在过去、现在、未来三者间的和谐统一。这一特性将在应用本发明所述方法解决Year2000问题的最佳实施例中明确。

本发明所述的多周期日历系统跨时空使用线性日历的基本保障来自于用户获得了灵活日历自定义功能,而系统提供的多虚拟时钟及“恒久不变”的存在——静态线性日历则同样重要。此处时间观的改变也必不可少,即当前日期对不同的日历,不同的使用要求,可以有不同的标准。能取得实用价值最重要,当前日期对错并不绝对。

d.删除功能。该功能实现从本日历系统环境中永久性地除去一个日历及其相关的数据文件。

F.周期日历系统与其它系统环境的日期数据交换。如果两环境的日历系统均采用本发明所述的方法建立日历及使用管理日期数据,则交换与同一周期日历系统各日历间的日期数据转换相似,即访问对方日历参数,以关系YN=Y0+N及其恒等变换为线索,以周期日历与线性日历月日数据部分结构相同为依据,使用周期日历间日期数据转换方法进行系统间的日期数据交换。如果被访问的环境是一个非本方法建立的日期环境,则本功能按如下假设进行日期数据由非本发明环境向本发明所述系统转换,即假设所访问的环境日期数据为缺省周期日历日期数据,从而使被访问环境日期数据成为本日历系统可理解的日期数据。

G.系统设置。该功能提供对日历文件读写特性设置及修改,对周期日历创建的限制,以增加本日历系统的安全性。在系统设置功能中,还提供却省周期日历的修改功能。

至此,本发明所述的开放式线性周期日历系统的总体设计方案已经基本完整地给出了,其中体现本发明所公开的技术方案或方法的明显特征部分都有程序实现的流程图加以辅助说明。在上述总体设计方案的具体计算机实现上,哪些应由硬件实施,哪些须由软件完成,并没有过份严格的限制。它们应该遵循软硬件功能分配的一般关系准则,即硬件和软件在逻辑功能上是等效的,两者并无绝对的界限,且可以相互替代。因此,软硬件在本日历系统的具体实现上如何分工,采取什么分配方案,应不属于本说明书应讨论的范畴。

现在讨论如何在本发明所述的开放式线性周期日历系统中使用公历。在本发明所述系统中使用公历的充分必要条件是作为本日历系统的基础日历日期数据的线性日历选择的是公历。上面的讨论中已经明确,本日历系统并不允许用户直接访问,操纵本系统的线性日历。这种限制有道理吗?回答是肯定的,其中重要的原因之一就是使用者可以通过一个自定义的名称为公历的周期日历来使用公历。使用者在定义公历时只要注意将周期日历年份数据选择成与公历当前年份数据保持一致即可。如现在公历为1998年,那么在周期日历的周期初始值上用户就必须选择一个小于或等于1998的自然数。这样的自然数可以有1998个选择,如:1、7、87、500及1998。定义了周期起始数据后就是定义周期取值范围,这时有些限制,必须满足起始值加周期值大于1998这一条件。然后就是定义周期日历元年对应的公历年份,周期公历的使用者更加没有选择的余地,起始值是什么数值周期日历元年就对应公历的多少年,如:87,就对应公元87年。这样定义的公历周期日历,在其周期取值范围内,从使用者的观点看与线性公历毫无二致。实际的周期日历系统提供的作为基础线性日历数据的公历日期数据库,也许其日期数据不会从公元元年开始,这时周期日历的设置起始值就要受此影响,这一点不难理解,也不会影响使用者正确地创建一部周期公历。当特定的周期公历达到周期上限,即失效时,周期公历系统的使用者可以通过修改周期公历的参数,便捷地继续以周期公历的方式使用线性公历。如:修改周期公历元年与线性公历的对应,使周期公历元年对应更晚的线性公历年份,而不必增大周期取值范围;或者直接加大周期值都可达到目的。

特别需要指出的是,在以公历为线性基础日历的情况下,系统的缺省周期日历设置就应该为上述一部周期公历。与有些周期日历相比,用上述方法定义的周期公历会使人感觉舒服得多。因为该周期公历在使用者看来并不象一部周期日历,但本质上这种被称之为公历的周期日历与其它周期日历没有差别。因为周期公历并不是线性公历,周期公历只是在周期公历的有效取值范围内实现了与线性公历的完全一一对应,在特定周期公历的定义下周期公历永远不会等价于线性公历。另一方面,周期公历的确可以通过修改参数达到使用任意一段线性公历的子集。这就是发明所述周期日历系统的特点。

下面再来建立一部周期日历,该日历名为中华人民共和国国历,该周期日历的周期起始值为“1”,周期为假设的1000,元年即周期“1”年对应公历1949,这样便完成了中国国历的创建,当该周期日历将到上限失效,同样只需进行简单的修改。

使用周期日历的转换功能,不难取得周期公历与中国国历间的日期对应。

更小使用范围的私历周期日历还有无数,使用者可根据自己的需要,使用本日历系统创立,这实在是一件方便的事,在使用上却极有效。

本发明所述的方法及原理认为的最佳实施例是应用本发明所述方法低成本、高时效地彻底解决现行资讯系统存在的Year 2000问题,具体方案如下:以公历日期作为基础构造一个单一周期日历系统,该系统特定时刻只存在一个活跃周期日历——周期公历。该周期公历在日月数据部分与线性公历日期数据结构完全一致。本系统不提供对该周期公历的隐藏,删除功能;由于现行资讯系统对两位日期数据的要求,故只提供部分周期日历修改功能。即周期公历的起始年份固定为“0”,周期取值范围固定为99,用户级的日历修改只针对周期元年与线性公历的对应;使用休眠唤醒原理,在资讯系统中实现不同周期日历版本的两位日期数据及相关资料的分类管理,使系统能够在特定的周期公历版本下使用过去、现在、将来公历日期数据及相关日期资料;本系统或不同系统的相同或不同周期公历间的日期数据转换,以及周期公历与线性公历的对应以关系YN=Y0+N及N=Y0-YN为基础;各资讯系统间、系统与用户间同时支持两种日期交流:第一,公历完备日期;第二,系统逻辑两位年份日期,即周期公历日期。系统内部使用两位年份周期公历日期;已具有日期资料的计算机系统,应按其周期公历的设置对日期资料进行转换,使其成为所设周期公历的合法日期资料;同时应对所设周期公历日期范围以外的日期资料按版本分类方法进行物理或逻辑上的分类管理。

现在公认解决方法包括彻底的Year 2000问题的解决——在资讯系统中使用四位完备公历年份表达。一方面,并没有彻底解决问题;另一方面,却造成了巨额的资源耗费,甚至引发严重的经济衰退。与现行所有Year 2000问题的解法相比本发明所述方法对所有计算机系统通用。在具体实现方面主要涉及系统软件,硬件及使用本发明所述方法的标准日期数据通讯接口。用户应用的大量代码修改工作在本发明来看,是完全没有必要的。这也充分体现了本发明所公开的技术方案的显著效果。尽管结合最佳实施例,对本发明已做说明,但应该理解对本领域技术人员来说,在不背离本发明真实本质的情况下,本发明的最佳实施例,可做不同修改和更动。本实施例的描述只能看作为解释而用,而不能局限地理解它。本发明的范围应只受附上的权利要求书所限定、约束。

QQ群二维码
意见反馈