[要約] RFC 2550は、Y10K問題とその先の問題についての要約と目的を提供しています。このRFCの目的は、長期的な日付表現の問題を認識し、解決策を提案することです。

Network Working Group                                       S. Glassman
Request for Comments: 2550                                   M. Manasse
Category: Stinkards Track                                      J. Mogul
                                            Compaq Computer Corporation
                                                           1 April 1999
        

Y10K and Beyond

Y10K以降

Status of this Memo

本文書の状態

This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited.

このメモは、インターネットコミュニティに情報を提供します。いかなる種類のインターネット標準も規定していません。このメモの配布は無制限です。

Copyright Notice

著作権表示

Copyright (C) The Internet Society (1999). All Rights Reserved.

Copyright(C)The Internet Society(1999)。全著作権所有。

Abstract

概要

As we approach the end of the millennium, much attention has been paid to the so-called "Y2K" problem. Nearly everyone now regrets the short-sightedness of the programmers of yore who wrote programs designed to fail in the year 2000. Unfortunately, the current fixes for Y2K lead inevitably to a crisis in the year 10,000 when the programs are again designed to fail.

私たちは千年の終わりに近づくにつれて、いわゆる「Y2K」問題に多くの注意が払われてきました。現在、ほぼ全員が2000年に失敗するように設計されたプログラムを作成した昔のプログラマーの近視眼を後悔しています。残念ながら、現在のY2Kの修正は、プログラムが再び失敗するように設計されている10,000年の危機に必然的につながります。

This specification provides a solution to the "Y10K" problem which has also been called the "YAK" problem (hex) and the "YXK" problem (Roman numerals).

この仕様は、「YAK」問題(16進数)および「YXK」問題(ローマ数字)とも呼ばれる「Y10K」問題の解決策を提供します。

1. 紹介、議論、および関連作業

Many programs and standards contain, manipulate and maintain dates. Comparing and sorting dates is a common activity. Many different formats and standards for dates have been developed and all have been found wanting.

多くのプログラムと標準では、日付が含まれ、操作され、維持されています。日付の比較と並べ替えは一般的なアクティビティです。日付の多くの異なる形式と標準が開発され、すべてが必要とされています。

Early date formats reserved only two digits to represent the year portion of a date. Programs that use this format make mistakes when dealing with dates after the year 2000. This is the so-called Y2K problem.

初期の日付形式では、日付の年の部分を表すために2桁しか予約されていませんでした。この形式を使用するプログラムは、2000年以降の日付を処理するときに誤りを犯します。これは、いわゆるY2K問題です。

The most common fix for the Y2K problem has been to switch to 4-digit years. This fix covers roughly the next 8,000 years (until the year 9999) by which time, everyone seems convinced that all current programs will have been retired. This is exactly the faulty logic and lazy programming practice that led to the current Y2K problem! Programmers and designers always assume that their code will eventually disappear, but history suggests that code and programs are often used well past their intended circumstances.

Y2K問題の最も一般的な修正は、4桁の年に切り替えることです。この修正は、およそ8,000年(9999年まで)をカバーし、それまでに、現在のすべてのプログラムが廃止されることを誰もが確信しているようです。これはまさに、現在のY2K問題を引き起こした欠陥のあるロジックと遅延プログラミングの実践です!プログラマーとデザイナーは常に自分たちのコードが最終的に消えると思い込んでいますが、歴史は、コードとプログラムはしばしば意図された状況をはるかに超えて使用されることを示唆しています。

The 4-digit year leads directly to programs that will fail in the year 10,000. This proposal addresses the Y10K problem in a general way that covers the full range of date and time format issues.

4桁の年は、1万年で失敗するプログラムに直接つながります。この提案は、日付と時刻の形式の問題のすべてをカバーする一般的な方法で、Y10K問題に対処します。

1.1 Current approaches
1.1 現在のアプローチ

A large number of approaches exist for formatting dates and times. All of them have limitations. The 2-digit year runs into trouble next year. The 4-digit year hits the wall in the year 10,000. A 16-bit year runs out in the year 65,536. A 32-bit counter for the number of seconds since 1970 [UNIX] wraps in 2038. A 32-bit counter for the number of milli-seconds since booting crashes a Windows (TM) PC in 49.7 days [Microsoft].

日付と時刻をフォーマットするためのアプローチは多数あります。それらすべてに制限があります。 2桁の年は来年問題に直面します。 4桁の年は10,000年で壁にぶつかります。 16ビット年は65,536年で使い果たされます。 1970年からの秒数を表す32ビットカウンター[UNIX]は2038年に折り返します。起動してからWindows(TM)PCが49.7日でクラッシュするまでのミリ秒数を表す32ビットカウンター[Microsoft]。

In this specification, we focus on the Y10K problems since they are most common and a large number of existing standards and protocols are susceptible to them (section 7). These standards, and new proposals on their way, will lead to a serious world-wide problem unless efforts are made now to correct the computing, government, and business communities.

この仕様では、Y10K問題が最も一般的であり、多数の既存の標準とプロトコルが影響を受けやすいため、これらの問題に焦点を当てています(セクション7)。これらの標準、およびその途中の新しい提案は、コンピューティング、政府、およびビジネスコミュニティを是正するための取り組みが現在行われていない限り、深刻な世界規模の問題につながります。

Already, a small cottage industry is popping up to deal with the Y10K problem [YUCK]. We encourage these efforts and, in the coming years, this effort can only grow in size and importance.

すでに、小さな家内工業がY10K問題[YUCK]に対処するために浮上しています。私たちはこれらの取り組みを奨励しており、今後数年間で、この取り組みは規模と重要性が増すだけです。

1.2 A Fixed Format Y10K Fix
1.2 固定形式のY10K修正

At the time of this writing, only one proposal [Wilborne] directly deals with the Y10K problem. In that proposal, dates are represented as decimal numbers with the dates compared numerically. The proposed format is simply YYYYYMMDD - i.e. 5-digit years.

この記事の執筆時点では、Y10K問題を直接扱っている提案は1つだけ[Wilborne]です。この提案では、日付は数値で比較された10進数として表されます。提案される形式は、単にYYYYYMMDD-つまり5桁の年です。

To allow numerical comparison of dates, this representation requires a completely fixed representation for the date. There can be no optional fields, the date resolution is limited to the granularity of one day, and this solution fails in the year 100,000 (Y100K).

日付の数値比較を可能にするために、この表現は日付の完全に固定された表現を必要とします。オプションのフィールドはありません。日付の解決は1日の粒度に制限されており、このソリューションは100,000年(Y100K)で失敗します。

1.2.2 Limitations of Numerical Comparison
1.2.2 数値比較の制限

While sufficient for the specific Y10K problem, this solution is limited. Even if extended for 6-digit years, it fails on 32-bit systems (and future 32-bit system emulators) after the date represented by the number 2147481231 (December 31, 214748) leading to a Y214749 problem. Similarly, 64-bit and 128-bit systems also will fail, although somewhat later (after December 31, 922,337,203,685,477 and December 31, 17,014,118,346,046,923,173,168,730,371,588,410 respectively).

特定のY10K問題には十分ですが、このソリューションは制限されています。 6桁の年まで拡張した場合でも、2147481231(214748年12月31日)で表される日付以降の32ビットシステム(および将来の32ビットシステムエミュレータ)では失敗し、Y214749の問題が発生します。同様に、64ビットシステムと128ビットシステムも失敗しますが、多少遅くなります(それぞれ922,337,203,685,477および12月31日17,014,118,346,046,923,173,168,730,371,588,410以降)。

1.2.3 Granularity Issues
1.2.3 粒度の問題

The granularity problems of a fixed format date can be improved by extending the date format to include greater precision in the date. However, since numerical comparison of dates requires a fixed representation date, an extended format can not provide sufficient resolution for all foreseeable needs.

日付形式を拡張して日付の精度を高めることで、固定形式の日付の細分性の問題を改善できます。ただし、日付の数値比較には固定表現の日付が必要であるため、拡張形式では、予測可能なすべてのニーズに十分な解像度を提供できません。

For instance, if the precision were extended to the femto-second range the date format would become YYYYYMMDDHHMMSSmmmuuunnnpppfff (year, month, day, hour, minute, second, milli-second, micro-second, nano-second, pico-second, and femto-second). The additional 21 digits of this format limit the set of representable dates. Compared to 1.2.2, the 32-bit and 64-bit forms of the date are instantly exceeded, while the 128-bit version would be viable - expiring on December 31, 17,014,118,346,046.

たとえば、精度がフェムト秒の範囲に拡張された場合、日付形式はYYYYYMMDDHHMMSSmmmuuunnnpppfff(年、月、日、時間、分、秒、ミリ秒、マイクロ秒、ナノ秒、ピコ秒、およびフェムト秒)。この形式の追加の21桁は、表現可能な日付のセットを制限します。 1.2.2と比較すると、32ビットおよび64ビット形式の日付は瞬時に超えられますが、128ビットバージョンは実行可能です-有効期限は12月31、17、014、118、346、046です。

1.2.3.1 Extrapolation of Future Granularity Issues
1.2.3.1 将来の粒度問題の外挿

However, a simple extrapolation of Moore's law shows that even femto-second resolution will soon be inadequate. Projecting current CPU clock speeds forward, a femto-second clock speed will be achieved in only 30 years. And, by the year 10,000 the projected clock speed of the Intel Pentium MMDCLXVI (TM) will be approximately 10 ** (- 1609) seconds.

ただし、ムーアの法則を単純に外挿すると、フェムト秒の解像度でもすぐに不十分になることがわかります。現在のCPUクロック速度を予測すると、フェムト秒のクロック速度はたった30年で達成されます。そして、10,000年までに、インテルPentium MMDCLXVI(TM)の予測クロック速度は約10 **(-1609)秒になります。

This discussion clearly shows that any fixed-format, integer representation of a date is likely to be insufficiently precise for future uses.

この説明は、日付の固定形式の整数表現は、将来の使用には正確性が不十分である可能性が高いことを明確に示しています。

1.2.3.2 Floating Point Is No Solution
1.2.3.2 浮動小数点は解決策ではない

The temptation to use floating point numbers to represent dates should be avoided. Like the longer fixed-format, integer representations of the date, floating point representations merely delay the inevitable time when their range is exceeded. In addition, the well known problems of real numbers - rounding, de-normalization, non-uniform distribution, etc. - just add to the problems of dealing with dates.

日付を表すために浮動小数点数を使用する誘惑は避けられるべきです。長い固定形式の日付の整数表現と同様に、浮動小数点表現は、範囲を超えた場合に避けられない時間を遅らせるだけです。さらに、実数のよく知られた問題(丸め、非正規化、不均一分布など)は、日付の処理の問題に追加されます。

2 Structure of Y10K Solution

2 Y10Kソリューションの構造

Any Y10K solution should have the following characteristics.

Y10Kソリューションには、次の特性が必要です。

2.1 Compatibility
2.1 互換性

The format must be compatible with existing 4-digit date formats. Y2K compliant programs and standards must continue to work with Y10K dates before the year 10,000. Y10K compliant programs can gradually be developed over time and coexist with non-Y10K compliant programs.

この形式は、既存の4桁の日付形式と互換性がある必要があります。 Y2Kに準拠したプログラムと標準は、10,000年より前のY10Kの日付でも引き続き機能する必要があります。 Y10Kに準拠したプログラムは徐々に開発され、Y10Kに準拠しないプログラムと共存できます。

2.2 Simplicity and Efficiency
2.2 シンプルさと効率

Y10K dates must allow dates after 10,000 to be easily identified. Within a program, there must be a simple procedure for recognizing the Y10K dates and distinguishing them from legacy dates.

Y10Kの日付では、10,000より後の日付を簡単に識別できる必要があります。プログラム内では、Y10K日付を認識し、それらを従来の日付と区別するための簡単な手順が必要です。

2.3 Lexical Sorting
2.3 字句ソート

Y10K dates must be sortable lexically based on their ASCII representation. The dates must not require specialized libraries or procedures.

Y10Kの日付は、ASCII表現に基づいて字句的にソート可能である必要があります。日付には、特殊なライブラリーや手順を必要としないようにする必要があります。

2.4 Future Extensibility
2.4 将来の拡張性

Y10K dates must support arbitrary precision dates, and should support dates extending arbitrarily far into the future and past. Y10K dates from different eras and with different precisions must be directly comparable and sortable.

Y10K日付は、任意の精度の日付をサポートする必要があり、将来および過去までの任意の日付をサポートする必要があります。 Y10Kの日付は、異なる時代の異なる精度であり、直接比較可能でソート可能でなければなりません。

2.4.1 Environmental Considerations
2.4.1 環境への配慮

The known universe has a finite past and future. The current age of the universe is estimated in [Zebu] as between 10 ** 10 and 2 * 10 ** 10 years. The death of the universe is estimated in [Nigel] to occur in 10 ** 11 - years and in [Drake] as occurring either in 10 ** 12 years for a closed universe (the big crunch) or 10 ** 14 years for an open universe (the heat death of the universe).

既知の宇宙には有限の過去と未来があります。宇宙の現在の年齢は、[Zebu]で10 ** 10〜2 * 10 ** 10年と推定されます。宇宙の死は、[Nigel]では10 ** 11-年、[Drake]では閉じた宇宙(大きなクランチ)の10 ** 12年または10 ** 14年のいずれかで発生すると推定されています。開かれた宇宙(宇宙の熱死)。

In any case, the prevailing belief is that the life of the universe (and thus the range of possible dates) is finite.

いずれにせよ、一般的な考えでは、宇宙の寿命(つまり、可能な日付の範囲)は有限です。

2.4.2 Transcending Environmental Considerations
2.4.2 環境への配慮を超える

However, we might get lucky. So, Y10K dates are able to represent any possible time without any limits to their range either in the past or future.

しかし、幸運になるかもしれません。したがって、Y10Kの日付は、過去または将来のいずれかの範囲に制限を設けることなく、可能な時間を表すことができます。

Y10K compliant programs MAY choose to limit the range of dates they support to those consistent with the expected life of the universe. Y10K compliant systems MUST accept Y10K dates from 10 ** 12 years in the past to 10 ** 20 years into the future. Y10K compliant systems SHOULD accept dates for at least 10 ** 29 years in the past and future.

Y10K準拠プログラムは、サポートする日付の範囲を、予想される宇宙の寿命と一致する日付に制限することを選択できます。 Y10K準拠のシステムは、過去の10 ** 12年から未来の10 ** 20年までのY10K日付を受け入れる必要があります。 Y10K準拠のシステムは、過去および未来の少なくとも10 ** 29年の日付を受け入れる必要があります。

3 Syntax Overview

3構文の概要

The syntax of Y10K dates consists of simple, printable ASCII characters. The syntax and the characters are chosen to support a simple lexical sort order for dates represented in Y10K format. All Y10K dates MUST conform to these rules.

Y10K日付の構文は、単純で印刷可能なASCII文字で構成されています。構文と文字は、Y10K形式で表される日付の単純な字句ソート順をサポートするように選択されています。 Y10Kの日付はすべて、これらの規則に準拠する必要があります。

Every Y10K date MUST begin with a Y10K year. Following the year, there MAY be an arbitrary sequence of digits. The digits are interpreted as MMDDHHMMSSmmmuuunnnpppfff... (month, day, hour, minute, second, milli-second, micro-second, nano-second pico-second, femto-second, etc. - moving left to right in the date, digits always decrease in significance).

すべてのY10Kの日付は、Y10Kの年で始まる必要があります。年に続いて、数字の任意のシーケンスが存在する場合があります。数字はMMDDHHMMSSmmmuuunnnpppfff ...(月、日、時、分、秒、ミリ秒、マイクロ秒、ナノ秒のピコ秒、フェムト秒など)として解釈されます-日付の左から右へ移動、数字の意味は常に減少します)。

All dates and times MUST be relative to International Atomic Time (TAI) [NRAO].

すべての日付と時刻は、国際原子時(TAI)[NRAO]を基準にする必要があります。

When comparing dates, a date precedes every other date for which it is a prefix. So, the date "19990401000000" precedes the date "19990401000000000". In particular, dates with the format YYYYMMDD are interpreted to represent the exact instant that the day begins and precede any other date contained in that day.

日付を比較するとき、日付は、それが接頭辞である他のすべての日付の前にあります。したがって、日付「19990401000000」は日付「19990401000000000」よりも前になります。特に、YYYYMMDD形式の日付は、その日が始まる正確な瞬間を表し、その日に含まれる他の日付よりも前に来ると解釈されます。

3.1 Years 1 - 9999
3.1 1〜9999年

The current 4-digit year syntax covers all years from 1000 - 9999. These years are represented as 4 decimal digits. Leading 0's MUST be added to the years before 1000 to bring the year to 4 digits. Files containing legacy pre-Y1K [Mike] dates will have to be converted.

現在の4桁の年の構文は、1000〜9999のすべての年をカバーします。これらの年は、4つの10進数として表されます。年を4桁にするには、先頭の0を1000より前の年に追加する必要があります。 Y1Kより前の[Mike]以前の日付を含むファイルは変換する必要があります。

3.2 Years 10,000 through 99,999
3.2 10,000〜99,999年

Four digits are not sufficient to represent dates beyond the year 9999. So, all years from 10,000 - 99,999 are represented by 5 digits preceded by the letter 'A'. So, 10,000 becomes "A10000" and 99,999 becomes "A99999". Since 'A' follows '9' in the ASCII ordering, all dates with 5-digit years will follow all dates with 4-digit years (for example, "A10000" will sort after "9999"). This gives us the sort and comparison behaviour we want.

9999年を超える日付を表すには4桁では不十分です。したがって、10,000〜99,999のすべての年は、文字「A」が前に付いた5桁で表されます。したがって、10,000は「A10000」になり、99,999は「A99999」になります。 ASCII順では「A」が「9」の後に続くため、5桁の年のすべての日付は4桁の年のすべての日付の後に続きます(たとえば、「A10000」は「9999」の後にソートされます)。これにより、必要な並べ替えと比較の動作が得られます。

3.3 Years 100,000 up to 10 ** 30
3.3 100,000年から10年まで** 30

By a simple generalization of 3.2, 6-digit years are preceded by the letter 'B', 7-digit years by 'C', etc. Using just the 26 upper-case ASCII characters, we can cover all years up to 10**30 (the last year representable is "Z999999999999999999999999999999"). Again, since the ASCII characters are sorted alphabetically, all dates sort appropriately.

3.2の単純な一般化により、6桁の年号の前に文字「B」、7桁の年号に「C」などが続きます。26の大文字のASCII文字だけを使用して、10年までのすべての年をカバーできます* ※30(昨年表記の「Z999999999999999999999999999999999」となります)。繰り返しますが、ASCII文字はアルファベット順にソートされるため、すべての日付は適切にソートされます。

3.4 Years 10 ** 30 and beyond (Y10**30)
3.4 10 ** 30年以降(Y10 ** 30)

As discussed in 2.4.1, the end of the universe is predicted to occur well before the year 10 ** 30. However, if there is one single lesson to be learned from the current Y2K problems, it is that specifications and conventions have a way of out living their expected environment. Therefore we feel it is imperative to completely solve the date representation problem once and for all.

2.4.1で説明したように、宇宙の終わりは10 ** 30年のかなり前に発生すると予測されています。しかし、現在のY2K問題から学ぶべきレッスンが1つある場合、仕様と規則には彼らの期待される環境を生きる方法。したがって、日付表現の問題を完全に解決することが不可欠であると感じています。

3.4.1 Naive Approach for Y10**30 Problem
3.4.1 Y10 ** 30問題に対する素朴なアプローチ

The naive solution is to prepend a single '^' (caret) - caret sorts after all letters in the ASCII order) before all years from 10 ** 30 to 10 ** 56. Thus the year "Z999999999999999999999999999999" is followed by the year "^A1000000000000000000000000000000". Similarly, all years from 10 ** 56 to 10 ** 82 get one more caret. So, the year "^Z99999999999999999999999999999999999999999999999999999999" is followed by the year "^^A100000000000000000000000000000000000000000000000000000000". This scheme can be extended indefinitely by prepending one addition caret for each additional factor of 10 ** 26 in the range of the year.

単純な解決策は、1つの '^'(脱字記号)を先頭に付加することです-脱字記号は、ASCII順ですべての文字の後にソートされます)10 ** 30から10 ** 56までのすべての年の前。したがって、年「Z999999999999999999999999999999」の後に年が続きます「^ A1000000000000000000000000000000」。同様に、10 ** 56から10 ** 82までのすべての年には、キャレットが1つ増えます。したがって、「^ Z99999999999999999999999999999999999999999999999999999999」という年の後に「^^ A100000000000000000000000000000000000000000000000000000000」という年が続きます。このスキームは、年の範囲で10 ** 26の追加係数ごとに1つの追加キャレットを付加することにより、無期限に拡張できます。

In this approach, the number of digits in a date that are used to represent the year is simply:

このアプローチでは、年を表すために使用される日付の桁数は単純に次のとおりです。

      26 * <number of '^'> + ASCII(<prefix letter>) - ASCII('A') + 5
        

Note: this algorithm is provided for informational purposes only and to show the path leading to the true solution. Y10K dates MUST NOT use this format. They MUST use the format in the next section.

注:このアルゴリズムは、情報提供のみを目的としており、真のソリューションへの道を示すために提供されています。 Y10K日付はこの形式を使用してはなりません。彼らは次のセクションでフォーマットを使用しなければなりません。

3.4.2 Space Efficient Approach for Y10**30 Problem
3.4.2 Y10 ** 30問題に対するスペース効率の良いアプローチ

The solution in 3.4.1 is not a space efficient format for giving the number of digits in the year. The length of the prefix grows linearly in the length of the year (which, itself, grows logarithmically over time). Therefore, Y10K format dates use an improved, more compact encoding of the number of digits in the year.

3.4.1のソリューションは、年の桁数を示すためのスペース効率の良い形式ではありません。プレフィックスの長さは、1年の長さで線形に増加します(それ自体、時間の経過とともに対数的に増加します)。したがって、Y10K形式の日付では、年の桁数の改善されたよりコンパクトなエンコードが使用されます。

3.4.2.1 Years 10 ** 30 to 10 ** 56
3.4.2.1 10年10 ** 30〜10 ** 56

As in 3.4.1, a single '^' and letter precede the year.

3.4.1と同様に、1つの「^」と文字が年の前に付きます。

3.4.2.2 Years 10 ** 56 to 10 ** 732
3.4.2.2 年10 ** 56から10 ** 732

The year is preceded by two carets ("^^") and two letters. The letters create a two digit, base 26 number which is the number of digits in the year minus 57. So, the year "^Z99999999999999999999999999999999999999999999999999999999" is followed by the year "^^AA100000000000000000000000000000000000000000000000000000000". The last representable year with two carets is the year (10 ** 732) - 1 and is "^^ZZ999..999" (i.e. two carets and two Z's, followed by 732 consecutive 9's).

年の前には2つのキャレット( "^^")と2つの文字があります。文字は、年の桁数から57を引いた2桁の基数26の数値を作成します。したがって、年 "^ Z99999999999999999999999999999999999999999999999999999999"の後に年 "^^ AA100000000000000000000000000000000000000000000000000000000"が続きます。 2つのキャレットを使用して表現できる最後の年は、年(10 ** 732)-1で、「^^ ZZ999..999」です(つまり、2つのキャレットと2つのZの後に732の連続する9が続きます)。

The formula for the number of digits in the year is, based on the two digit prefix is:

年の桁数の式は、2桁の接頭辞に基づいています。

    26 * (ASCII(<prefix letter1>) - ASCII('A')) +
          ASCII(<prefix letter2>) - ASCII('A') + 57
        
3.4.2.3 Years 10 ** 732 to 10 ** 18308
3.4.2.3 10年** 732から10 ** 18308

The next block of years has the number of digits given by three carets ("^^^") followed by three letters forming a three-digit, base 26 number. The number of digits in the year is given by the formula:

次の年のブロックは、3つのキャレット( "^^^")によって与えられた桁数の後に、3桁の基数26を形成する3つの文字が続きます。年の桁数は次の式で与えられます。

    676 * (ASCII(<prefix letter1>) - ASCII('A')) +
     26 * (ASCII(<prefix letter2>) - ASCII('A')) +
           ASCII(<prefix letter3>) - ASCII('A') + 733
        
3.4.2.4 General Format for Y10K Dates
3.4.2.4 Y10K日付の一般的な形式

In general, if there is at least one letter in a Y10K year, the number of the digits in the year portion of the date is given by the formula:

一般に、Y10K年に少なくとも1つの文字がある場合、日付の年の部分の桁数は、次の式で与えられます。

       base26(fib(n) letters) + y10k(n)
        

Where "n" is the number of leading carets and the fig, base26 and y10k functions are defined with the following recurrence relations:

「n」は先頭のキャレットの数であり、fig、base26、およびy10k関数は次の反復関係で定義されます。

fib(n) is the standard Fibonacci sequence with:

fib(n)は、標準のフィボナッチ数列で、次のものがあります。

fib(0) = 1

ファイバー(0)= 1

fib(1) = 1

ファイバー(1)= 1

      fib(n+2) = fib(n) + fib(n+1)
        

base26(m letters) is the base 26 number represented by m letters A-Z:

base26(m文字)は、m文字A〜Zで表される基数26の数値です。

      base26(letter) =  ASCII(<letter>) - ASCII('A')
      base26(string letter) = 26 * base26(string) + base26(letter)
        

y10k(n) is the necessary fudge factor to align the sequences

y10k(n)は、シーケンスを整列するために必要なファッジファクターです。

properly:

正しく:

      y10k(0) = 5
      y10k(n+1) = 26 ** fib(n) + y10k(n)
        

If the year does not have at least one letter in the year, then the number of digits in the year is:

年の年に少なくとも1つの文字がない場合、年の桁数は次のようになります。

4

This year format is space-efficient. The length of the prefix giving number of digits in the year only grows logarithmically with the number of digits in the year. And, the number of carets preceding the prefix only grows logarithmically with the number of digits in the prefix.

この年の形式はスペース効率に優れています。年の桁数を示す接頭辞の長さは、年の桁数とともに対数的にのみ増加します。また、プレフィックスの前にあるキャレットの数は、プレフィックスの桁数に応じて対数的にのみ増加します。

3.5 B.C.E. (Before Common Era) Years
3.5 西暦前(共通時代以前)年

Now that have a format for all of the years in the future, we'll take on the "negative" years. A negative year is represented in "Y10K-complement" form. A Y10K-complement year is computed as follows:

これで、将来のすべての年に対応する形式になったので、「負の」年を取り上げます。負の年は「Y10K-補数」形式で表されます。 Y10Kの補数年は次のように計算されます。

1) Calculate the non-negative Y10K year string as in 3.4.2.4. 2) Replace all letters by their base 26 complement. I.E. A -> Z, B -> Y, ... Z -> A. 3) Replace all digits in the year portion of the date by their base 10 complement. I.E. 0 -> 9, 1 -> 8, ... 9 -> 0. 4) Replace carets by exclamation points ('!'). 5) Four-digit years are pre-pended with a slash ('/') 6) Years that don't now begin with an exclamation point or slash are pre-pended with a star ('*'). (This rule covers the negative 5- 31 digit years).

1)3.4.2.4のように、負でないY10K年の文字列を計算します。 2)すべての文字をベース26の補数で置き換えます。 I.E. A-> Z、B-> Y、... Z-> A. 3)日付の年の部分のすべての数字を、10を底とする補数で置き換えます。 I.E. 0-> 9、1-> 8、... 9->0。4)キャレットを感嘆符( '!')に置き換えます。 5)4桁の年にはスラッシュ( '/')が前に付加されます。6)感嘆符またはスラッシュで始まらない年には、星( '*')が前に付加されます。 (この規則は、負の5から31桁の年をカバーします)。

For example, the year 1 BCE is represented by "/9998". The conversion is accomplished by applying rules:

たとえば、紀元前1年は「/ 9998」で表されます。変換は、ルールを適用することによって行われます。

1) Calculate the non-negative Y10K year ("1" -> "0001") 2) Complement the digits ("0001" -> "9998") 3) Four-digit numbers get a leading slash.

1)非負のY10K年を計算します( "1"-> "0001")2)数字を補完します( "0001"-> "9998")3)4桁の数値の前にスラッシュを付けます。

The earliest four-digit BCE year (9999 BCE) becomes "/0000" and the year before that (10000 BCE) becomes "*Z89999". The earliest 5-digit BCE year (99999 BCE) is "*Z00000". And the year before that (100000 BCE) is "*Y899999". And so on.

最初の4桁のBCE年(9999 BCE)は「/ 0000」になり、その前の年(10000 BCE)は「* Z89999」になります。最古の5桁のBCE年(99999 BCE)は "* Z00000"です。そしてその一年前(紀元前10 0000年)は「* Y899999」。等々。

These rules give the desired sort order for BCE dates. For example, the following dates get translated and sorted as: Jun 6, 200 BCE /97990606 199 BCE /9800 Jan 1, 199 BCE /98000101

これらのルールは、BCE日付の望ましいソート順を提供します。たとえば、次の日付は次のように翻訳され、並べ替えられます。6月6日、200 BCE / 97990606 199 BCE / 9800、1月1日、199 BCE / 98000101

3.6 Restrictions on Y10K Dates
3.6 Y10K日付の制限

There are no restrictions on legal values for Y10K dates. Y10K compliant programs MUST accept any syntactically legal Y10K date as a valid date. A '0' can be appended to the end of any Y10K date, yielding an equivalent date that sorts immediately after the original date and represents the instant after the original date.

Y10K日付の有効な値に制限はありません。 Y10K準拠プログラムは、構文的に正当なY10K日付を有効な日付として受け入れなければなりません。 Y0Kの日付の最後に「0」を追加すると、元の日付の直後にソートされ、元の日付の後の瞬間を表す同等の日付が生成されます。

The following are all valid representations (in sorted order) of the first instant of A10000:

以下は、A10000の最初の瞬間のすべての有効な表現(ソート順)です。

     A1
     A10000
     A1000001
     A100000101000000
     A1000001010000000000000000000000
        

Similarly, the following are all valid Y10K dates (in sorted order) for the time after the last instant of the A99999 and before the first instant of B100000:

同様に、以下はすべて、A99999の最後の瞬間の後、B100000の最初の瞬間の前の時刻に対して有効なY10K日付(ソート順)です。

A999991231250000 A999991232 A999992 A9999999999 A99999999990000000000000

A999991231250000 A999991232 A999992 A9999999999 A99999999990000000000000

4 ABNF

4 ABNF

The following ABNF [Crocker] gives the formal syntax for Y10K years.

次のABNF [Crocker]は、Y10K年の正式な構文を示しています。

The initial characters definitions are given in their lexical collation (ASCII) order.

最初の文字の定義は、字句照合(ASCII)の順序で示されています。

   exclamation = '!'
   star        = '*'
   slash       = '/'
   digit       =  0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
   letter      =  A | B | C | D | E | F | G | H | I | J | K | L | M |
        

N | O | P | Q | R | S | T | U | V | W | X | Y | Z caret = '^'

N | O | P | Q | R | S | T | U | V | W | X | Y | Zキャレット= '^'

   year     = [*(caret | exclamation) | star | slash ] [ *letter ]
             *digit
   month    = 2digit
   day      = 2digit
   hour     = 2digit
   minute   = 2digit
   second   = 2digit
   fraction = *digit
   date     = year [ month [ day [ hour [ minute [ second [ fraction
             ]]]]]]
        

5 Open Issues

5未解決の問題

There are a number date comparison problems that are beyond the scope of this specification.

この仕様の範囲を超える日付の比較問題がいくつかあります。

1) Dates from different calendar systems can not be directly compared. For instance, dates from the Aztec, Bhuddist, Jewish, Muslim, and Hittite calendars must be converted to a common calendar before comparisons are possible.

1)異なるカレンダーシステムの日付を直接比較することはできません。たとえば、アステカ、ブディスト、ユダヤ、イスラム教、ヒッタイトのカレンダーの日付は、比較する前に共通のカレンダーに変換する必要があります。

2) Future re-numberings of years are not covered. If, and when, a new "Year 0" occurs and comes into general use, old dates will have to be adjusted.

2)年の将来の再番号付けはカバーされません。新しい「年0」が発生し、一般的に使用されるようになった場合、古い日付を調整する必要があります。

3) Continued existence of Earth-centric time periods (year, day, etc.) are problematical past the up-coming destruction of the solar system (5-10 billion years or so). The use of atomic-time helps some since leap seconds are no longer an issue.

3)地球中心の期間(年、日など)の継続的な存在は、太陽系の次の破壊(50〜100億年程度)を過ぎても問題があります。うるう秒はもはや問題ではないので、atomic-timeの使用は一部に役立ちます。

4) Future standards and methods of synchronization for inter-planetary and inter-galactic time have not been agreed to.

4)惑星間および銀河間時間の同期の将来の標準と方法は合意されていません。

5) Survivability of dates past the end of the universe is uncertain.

5)宇宙の終わりを過ぎた日付の生存可能性は不確実です。

6 Affected Standards

6影響を受ける標準

A number of standards currently and RFCs use 4-digit years and are affected by this proposal:

現在、多くの標準とRFCは4桁の年を使用しており、この提案の影響を受けます。

rfc2459: Internet X.509 Public Key Infrastructure Certificate and CRL Profile rfc2326: Real Time Streaming Protocol (RTSP) rfc2311: ODETTE File Transfer Protocol rfc2280: Routing Policy Specification Language (RPSL) rfc2259: Simple Nomenclator Query Protocol (SNQP) rfc2244: ACAP -- Application Configuration Access Protocol rfc2167: Referral Whois (RWhois) Protocol V1.5 rfc2065: Domain Name System Security Extensions rfc2060: Internet Message Access Protocol - Version 4rev1 rfc1922: Chinese Character Encoding for Internet Messages rfc1912: Common DNS Operational and Configuration Errors rfc1903: Textual Conventions for Version 2 of the Simple Network Management Protocol (SNMPv2) rfc1521: MIME (Multipurpose Internet Mail Extensions) Part One:

rfc2459:インターネットX.509公開キーインフラストラクチャ証明書とCRLプロファイルrfc2326:リアルタイムストリーミングプロトコル(RTSP)rfc2311:ODETTEファイル転送プロトコルrfc2280:ルーティングポリシー仕様言語(RPSL)rfc2259:簡易命名クエリプロトコル(SNQP)rfc2244:ACAP- -アプリケーション構成アクセスプロトコルrfc2167:参照Whois(RWhois)プロトコルV1.5 rfc2065:ドメインネームシステムセキュリティ拡張機能rfc2060:インターネットメッセージアクセスプロトコル-バージョン4rev1 rfc1922:インターネットメッセージの中国語文字エンコーディングrfc1912:一般的なDNSの操作および構成エラーrfc1903:簡易ネットワーク管理プロトコル(SNMPv2)バージョン2のテキスト表記規則rfc1521:MIME(多目的インターネットメール拡張)パート1:

rfc1123: Requirements for Internet hosts - application and support

rfc1123:インターネットホストの要件-アプリケーションとサポート

The following standards internally represent years as 16-bit numbers (0..65536) and are affected by this proposal:

次の標準は、内部的に年を16ビット数値(0..65536)で表し、この提案の影響を受けます。

rfc2021: Remote Network Monitoring Management Information Base Version 2 using SMIv2 rfc1514: Host Resources MIB

rfc2021:SMIv2を使用したリモートネットワーク監視管理情報ベースバージョン2 rfc1514:ホストリソースMIB

The following ISO standard is affected: ISO8601: International Date Format

次のISO標準が影響を受けます:ISO8601:国際日付形式

8 Security Considerations

8セキュリティに関する考慮事項

Y10K dates will improve the security of all programs where they are used. Many errors in programs have been tracked to overflow while parsing illegal input. Programs allocating fixed size storage for dates will exhibit errors when presented with larger dates. These errors can be exploited by wily hackers to compromise the security of systems running these programs. Since Y10K dates are arbitrary length strings, there is no way to make them overflow.

Y10K日付は、それらが使用されるすべてのプログラムのセキュリティを向上させます。プログラム内の多くのエラーは、不正な入力の解析中にオーバーフローするように追跡されています。日付に固定サイズのストレージを割り当てるプログラムでは、日付を大きくするとエラーが発生します。これらのエラーは、これらのプログラムを実行しているシステムのセキュリティを危険にさらすために、巧妙なハッカーによって悪用される可能性があります。 Y10Kの日付は任意の長さの文字列であるため、オーバーフローさせる方法はありません。

In addition, positive Y10K dates are easy to compare and less error-prone for humans. It is easier to compare the three projected end of the universe dates - "H100000000000", "I1000000000000" and "K100000000000000" - by looking at the leading letter than by counting the 0's. This will reduce inadvertent errors by people. This advantage will become more noticeable when large dates are more common.

さらに、正のY10K日付は比較が簡単で、人間にとってエラーが発生しにくくなります。予測される3つの宇宙の終わりの日付「H100000000000」、「I1000000000000」、および「K100000000000000」-を比較することは、0を数えるよりも先頭の文字を見る方が簡単です。これにより、人による不注意によるエラーが減少します。この利点は、日付が大きいほど一般的になります。

Unfortunately, negative Y10K dates are a bit more difficult to decipher. However, by comparing the current age of the universe to its projected end, it is obvious that there will be many more positive dates than negative dates. And, while the number of negative dates for human history is currently greater than the number of positive dates, the number of negative dates is fixed and the number of positive dates is unbounded.

残念ながら、負のY10K日付は解読するのが少し難しいです。ただし、宇宙の現在の年齢とその予測される終了を比較することにより、負の日付よりも正の日付の方がはるかに多くなることは明らかです。また、人類の歴史の負の日付の数は現在、正の日付の数よりも多い一方で、負の日付の数は固定されており、正の日付の数は無制限です。

9 Conclusion

9まとめ

It is not too early to aggressively pursue solutions for the Y10K problem. This specification presents a simple, elegant, and efficient solution to this problem.

Y10K問題の解決策を積極的に追求するのは早すぎません。この仕様は、この問題に対するシンプルで洗練された効率的なソリューションを提供します。

10 References

10参照

[Crocker] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997.

[Crocker] Crocker、D。およびP. Overell、「構文仕様の拡張BNF:ABNF」、RFC 2234、1997年11月。

   [Drake]     Review for the Drake Equation
               http://www.umsl.edu/~bwilking/assign/drake.html
        
   [Microsoft] SNMP SysUpTime Counter Resets After 49.7 Days
               http://support.microsoft.com/support/kb/articles/Q169/
               8/47.asp
        
   [Mike]      Y1K http://lonestar.texas.net/~mdlvas/y1k.htm
        
   [Nigel]     Nigel's (en)lighening tour of Thermodynamics for
               Economists ;-) http://www.santafe.edu/~nigel/thermo-
               primer.html
        
   [NRAO]      Astronomical Times
               http://sadira.gb.nrao.edu/~rfisher/Ephemerides/times.html
        
   [RFC]       Here are all the online RFCs. Note: this is a LONG menu.
               http://info.internet.isi.edu/1s/in-notes/rfc/files
        
   [UNIX]      Year 2000 Issues http://www.rdrop.com/users/caf/y2k.html
        
   [Wilborne]  PktCDateLig
               http://www3.gamewood.net/mew3/pilot/pocketc/pktcdate/
               index.html
        
   [YUCK]      Y10K Unlimited Consulting Knowledgebase
               http://www.loyd.net/y10k/index.html
        
   [Zebu]      The Search for H0
               http://zebu.uoregon.edu/1997/ph410/l6.html
        

11 Authors' Addresses

11著者のアドレス

Steve Glassman Compaq Systems Research Center 130 Lytton Avenue Palo Alto, CA 94301 USA

Steve Glassman Compaq Systems Research Center 130 Lytton Avenue Palo Alto、CA 94301 USA

   Phone: +1 650-853-2166
   EMail: steveg@pa.dec.com
        

Mark Manasse Compaq Systems Research Center 130 Lytton Avenue Palo Alto, CA 94301 USA

Mark Manasse Compaq Systems Research Center 130 Lytton Avenue Palo Alto、CA 94301 USA

   Phone: +1 650-853-2221
   EMail: msm@pa.dec.com
        

Jeff Mogul Compaq Western Resarch Lab 250 University Avenue Palo Alto, CA 94301 USA

Jeff Mogul Compaq Western Research Lab 250 University Avenue Palo Alto、CA 94301 USA

   Phone: +1 650-617-3300
   EMail: mogul@pa.dec.com
        
12. 完全な著作権表示

Copyright (C) The Internet Society (1999). All Rights Reserved.

Copyright(C)The Internet Society(1999)。全著作権所有。

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

このドキュメントとその翻訳はコピーして他のユーザーに提供することができ、コメントまたはその他の方法で説明したり、その実装を支援する二次的著作物は、いかなる種類の制限なしに、全体または一部を準備、コピー、公開、および配布することができます。 、ただし、上記の著作権表示とこの段落は、そのようなすべてのコピーと派生物に含まれています。ただし、このドキュメント自体は、著作権に関する通知を削除したり、インターネットソサエティや他のインターネット組織への参照を削除したりするなど、いかなる方法でも変更できません。ただし、インターネット標準を開発する目的で必要な場合は除きます。インターネット標準のプロセスに従うか、または必要に応じて、それを英語以外の言語に翻訳する必要があります。

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

上記で付与された制限付きのアクセス許可は永続的であり、インターネットソサエティまたはその後継者または譲受人によって取り消されることはありません。

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

このドキュメントとここに含まれる情報は「現状有姿」で提供され、インターネット社会およびインターネット技術タスクフォースは、明示または黙示を問わず、ここに記載されている情報の使用が保証するものに限定されないいかなる保証も含め、一切の保証を否認します。商品性または特定の目的への適合性に関する権利または黙示の保証を侵害すること。