平成29年秋期午後問13
みかんさん
(No.1)
https://www.fe-siken.com/kakomon/29_aki/pm13.html
図1のワークシート"ログ”の列Aで聞きたいことがあります。
「列Aには,PCがサーバにアクセスした時刻が入力されている。ここで,時刻は,基準となる1970年1月1日(木曜日)の0時00分から当該時刻までの分を単位とする経過時間で表現する。」という文があり、日が経つにつれてすごく大きい数字になっていくと思います。実際に社会で使われているものも時刻はこのようなひょうじがされているのですか?また別の方法があるのですか?
どなたかよろしくお願いいたします。
図1のワークシート"ログ”の列Aで聞きたいことがあります。
「列Aには,PCがサーバにアクセスした時刻が入力されている。ここで,時刻は,基準となる1970年1月1日(木曜日)の0時00分から当該時刻までの分を単位とする経過時間で表現する。」という文があり、日が経つにつれてすごく大きい数字になっていくと思います。実際に社会で使われているものも時刻はこのようなひょうじがされているのですか?また別の方法があるのですか?
どなたかよろしくお願いいたします。
2021.11.07 23:02
chihiroさん
★FE プラチナマイスター
(No.2)
ExcelのTODAY関数とNOW関数を例に挙げましょう。
TODAY関数は今日の日付を出す関数ですが、これは1900/1/0からの経過日数を日付に変換して表示しています。(例えば今日の日付 2021/11/7であれば44507です)
NOW関数は今日の日付と現在の時刻を出す関数で、これもTODAY関数同様、数値を日付と時刻に変換して表示しています。
TODAY関数と違う点は、数値が小数点以下まであることです。(TODAY関数は整数です)
「〇時△分□秒」を「0.abcde…日」と解釈しているんですね。
私の知識が浅いため、これくらいしか紹介できませんが、表現方法自体はたくさんあります。(問題のような表現方法ももちろん可能です)
一例として挙げさせていただきましたが、参考になれば幸いです。
TODAY関数は今日の日付を出す関数ですが、これは1900/1/0からの経過日数を日付に変換して表示しています。(例えば今日の日付 2021/11/7であれば44507です)
NOW関数は今日の日付と現在の時刻を出す関数で、これもTODAY関数同様、数値を日付と時刻に変換して表示しています。
TODAY関数と違う点は、数値が小数点以下まであることです。(TODAY関数は整数です)
「〇時△分□秒」を「0.abcde…日」と解釈しているんですね。
私の知識が浅いため、これくらいしか紹介できませんが、表現方法自体はたくさんあります。(問題のような表現方法ももちろん可能です)
一例として挙げさせていただきましたが、参考になれば幸いです。
2021.11.07 23:51
みかんさん
(No.3)
プログラムとしては数字で出ても、人間が読む側としては、読みやすいように「〇時〇分〇秒」と表示されるということでしょうか?
2021.11.08 09:31
chihiroさん
★FE プラチナマイスター
(No.4)
そういうことです。Excelを利用できるのであれば、適当な日付を数値表記にすると日付に応じた数値が表示されることを確認できます。
2021.11.08 10:02
KanaSatoさん
(No.5)
日時の取り扱い方は様々ありますが、これは「UNIX時間」を扱いやすいように修正した取扱い方ですね。本物の「UNIX時間」も、1970年1月1日0時0分0秒をゼロとして正の整数で時刻を表現している点で同じです。
しかしながら、本問が1分経過するごとに1ずつ加算なのに対し、本物のUNIX時間は1秒経過するたびに、1ずつ加算されていきます。現在のUNIX時間は1636242426なので、本問と比べてもかなり大きな数字となります。
なお、Excelも似たような日時の管理を行っており、chihiroさんのおっしゃる通り、1日経過を1換算で表記しています。時分秒については、24時間(=1日)を "1" とし、これに満たない部分を小数点で表現しています。例えば、"2021年11月8日0時0分0秒" は "44508" で、"2021年11月8日12時0分0秒" は、1日のちょうど半分(=0.5)が経過しているということで、"44508.5" になります。
Excelを忠実に再現しようとすると、分単位の演算では小数点以下のオンパレードになりますし、本物のUNIX時間では桁数の大きさに翻弄されることになるでしょうから、本問からはIPAの "優しさ" が垣間見えます。
しかしながら、本問が1分経過するごとに1ずつ加算なのに対し、本物のUNIX時間は1秒経過するたびに、1ずつ加算されていきます。現在のUNIX時間は1636242426なので、本問と比べてもかなり大きな数字となります。
なお、Excelも似たような日時の管理を行っており、chihiroさんのおっしゃる通り、1日経過を1換算で表記しています。時分秒については、24時間(=1日)を "1" とし、これに満たない部分を小数点で表現しています。例えば、"2021年11月8日0時0分0秒" は "44508" で、"2021年11月8日12時0分0秒" は、1日のちょうど半分(=0.5)が経過しているということで、"44508.5" になります。
Excelを忠実に再現しようとすると、分単位の演算では小数点以下のオンパレードになりますし、本物のUNIX時間では桁数の大きさに翻弄されることになるでしょうから、本問からはIPAの "優しさ" が垣間見えます。
2021.11.08 10:04
KanaSatoさん
(No.6)
2021/11/08
2021/11/08 10:00:00
2021/11/08 10:00:01
上の文字列をExcelにコピペした後に、コピペ範囲を「セルの書式設定」で「標準」に変えてあげれば、日時データが数値で扱われていることが確認できると思います。
2021/11/08 10:00:00
2021/11/08 10:00:01
上の文字列をExcelにコピペした後に、コピペ範囲を「セルの書式設定」で「標準」に変えてあげれば、日時データが数値で扱われていることが確認できると思います。
2021.11.08 10:07
みかんさん
(No.7)
chihiroさん、KanaSatoさんありがとうございました!
とても勉強になりました。
調べてたら「西暦2038年問題」というものも出てきたのでより知識を深めたいと思います。
本当にありがとうございました。
とても勉強になりました。
調べてたら「西暦2038年問題」というものも出てきたのでより知識を深めたいと思います。
本当にありがとうございました。
2021.11.08 11:49
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告