--- 素朴な疑問集 ---
トップページへ    [素朴な疑問集 TOP]


疑問No.519 (2006.05.09)

Q. UCさんからの疑問

 パソコン(Windows)の右下に時計が出てます。
 こういうデジタル時計って、「2:01」と表示されています。分は「01」のように0を使って2桁で表示しているのに、時は「2」のように1桁で表示するのでしょう?
「02:01」という表示はあまり見かけません。

「02」だろうと「2」だろうと、我々には「2時」と分かりますから、区別をする必要がありません。つまり、「02」と「2」を区別するのは、パソコンにとって「大変手間がかかる」のでしょうね。
 ところが、「日付」から表すときには、「2006/05/01 02:01:07」のように、この場合には「02」と表示されます。
 パソコンは「時間」を一つの数値として扱っています。それを我々に分かりいやすいように、日付、時、分、秒に分割して表示してくれるわけです。その処理の段階に、なんらかの「からくり」がありそうです。
 なんとなく理解できるのですが、どなたかうまく説明を!(星田)


A. ポポンさんから

 2時1分が「2:01」表示の時→時分単独表示(先頭が時)
 2時1分が「02:01」表示の時→時分の前に年月日などの表示あり

なのではないでしょうか。
 これが正確な表現なのかはちょっと微妙なところがありますが、「○○飛んで□□」のように、□□の前に○○という別の単位の表示がある場合に、□□の10の位は本来表示の必要の無い「0」であっても0を表示させて、ぱっと見でも分かりやすいように配慮されているのではないでしょうか。
 時分のみ表示のときに「時」の10の位「0」は表示しないのに、年月日時分秒と「時」の前に表示谷があるときは

  2006/05/01 02:01:07

と10の位「0」を表示するのはそういうことではないでしょうか。
 私の答えとしては、「先頭の単位以外の桁数を「2」に統一することで、数字の連続表示でも人間が読み取りやすくするため」となります。

A. picorinoさんから

 コンピュータの特性に関係したものではないでしょう。現代の高性能なパソコンにとって、時刻部分の頭に0をつけるか否かなどという些細な仕事は、プログラムさえ組んであればお茶の子さいさいのはず。ポイントは、プログラム設計者のポリシーだと思います。
 パソコン以前から世の中にデジタル時計が広く存在しました。その表示で、9時までの頭に0をつけるタイプのものを見かけた記憶はありません。つまり、これが「デファクトスタンダード(現実的な標準)」ということではないでしょうか。
 日時を「2006/05/01 02:01:07」のように表示することは、時計ではない別の何かから影響を受けていると思います。

A. takeyonさんから

Windowsパソコンの右下の時間の表示ので、午前2時が「2:00」と表示されるのは単に設定の問題です。設定方法は、コントロールパネルの中の地域の設定で表示形式を変更できます。そこで設定を変更すると02:00と表示されます。
 ちなみに、コンピュータが時間を数値として扱っているというのは正解で、表示形式はすべて単なる設定の問題です。

A. ごんたさんから

 デジタル表示式の時計の都合でしょう。
 まず、考えられる時間の桁数パターンとしては、

     1:1
    10:1
   10:10

の3パターンです。
 これを機械式のデジタル時計で作成しようとすると、最大5桁の表示部が必要になります。そして、その桁ごとの役割が時間によって、1の位であったり、十の位であったり、「:」であったりと大変複雑になってしまいます。
 しかし「:」を固定すると、数字4桁だけの制御だけで済み、さらに桁を固定すれば、もっと単純になります(時間の上1桁がゼロなら空白、分の上の桁がゼロならゼロを表示すればよい)。分の桁がなぜ2桁なのかは、見栄えの問題だと思います。
 指摘にあった「2006/05/01 02:01:07」は、システム内部で持っている日付のデータを単純に取り出し編集したものだと思われます。文書に表記する場合などは、時間の前ゼロを外すなどの処理をやるのが普通です。しかし、他のプログラムが、その部分を見て何らかの処理(並べ替え等)をする場合、桁数をあわせないと取り出しの処理が複雑になったり、単純な比較で並べ替えができなくなってしまうので、そういう形になっているものと思われます。
 日付処理はプログラマ時代に苦労しました。

A. 正徳さんから

 2時1分の表示を「2:01」とするか、「02:01」とするかは、今となっては好みの問題程度だと思います。「H:mm:ss」という設定が、デフォルト(無設定時の)設定というだけです。あくまでデフォルトというだけの話なので、コントロールパネルの地域設定から他の表示も選べます。「HH:mm:ss」を選べば「02:01」になりますし、「H:m:s」とすれば「2:1」となります。こうすると慣れの問題でしょうけれど違和感ありますね。
 この「H:mm:ss」形式をデフォルトとしたのは、慣れ以外にも昔のMS-DOS時代の名残があるのではないかと思います。その昔はメモリ量もすくなく、1文字(1バイト)でもすくないことをよしとしていましたから、1日のうち6分の1しか表示されることのない10の位がもったいなかったのではないでしょうか。
 なお、右下(システムトレイといいます)時計は、そのままでは秒を表示しないようになっています。設定だけで済むのか、ツールを使うのか定かではありませんが、秒も表示させる方法があったと思います。
 もっとも私はそんなにシビアな生き方をしていないので、分がわかればOKですが、TV録画もさせている都合、正確でないと冒頭が切れたりでちょっと悲しいですね。

異邦人さんからも、回答をいただきました。ありがとうございました。