0
0

日付や時間の取り扱いについてうす〜く調べてみた〜その1

Last updated at Posted at 2024-05-05

書こうと思ったきっかけ

前にも書きましたが、自転車のレース運営をお手伝いしてるんですよ。
でね、タイムトライアルって種目があって、一人ずつ走ってタイムを競うんです。そう、走行時間を計測しなきゃいけないんですね。
で、最近、Google Apps Scriptで計算するようにしたんですが、まぁ時間関係に手間取りました。
そんな時にPythonでも時間を扱う事例が発生したのでまとめて書いとけや!と思ったわけです。
つまり、「共通点があるならまとめてやった方が効率的じゃん」です。

あ、そうそう、前提がひとつ。ここではjavascriptでもpythonでもexcelでも日付、時間を扱う型をdatetime型と呼んでます。
正式には違うのかもしれないけれど、面倒なんでご容赦を。



ISO8601 (日付と時刻の表記に関するISO)

ま、今日まで知らなかったですよ。本当に。
基礎の「き」は真面目にやっていた方がいい。



基本形式と拡張形式

とはいえ、皆さんも忙しいでしょうし、僕なりに気になったところをピックアップしとくね。

特に拡張形式だけでも覚えちゃおう
YYYY-MM-DDThh:mm:ss+09:00とかYYYY-MM-DDThh:mm:ssZ
Zをつける時はUTC(協定世界時;Universal time corrdinated)です。

Tで区切って、左には年月日を-で繋ぐ、Tの右は時間分秒を:で繋いで、最後にUTCからの時間差を書く。



まずは公式ドキュメントの紹介

Pythonはdatetime、JavaScriptはDateオブジェクト。
正直言って、僕もまだまだよくわかっていない。言葉が難解。

  • Python

  • JavaScript

はい。皆さんしっかり読めば大丈夫(お前はど〜よって言われそう。汗)
ええ、充分にはわかっていません。



datetime型の基本の「き」

これさえわかればあとは何とでもなると思います。

先に紹介したJavaScriptのMDNのページの最初の方をよく読んでみてください。こう書いてあります。

JavaScript の Date オブジェクトは、単一の瞬間の時刻をプラットフォームに依存しない形式で表します。 
Date オブジェクトは協定世界時 (UTC) の 1970 年 1 月 1 日からの経過ミリ秒数を表す Number の値を含んでいます。

はい、今日の大事なところはここまでです。
え?っと思われるかもしれませんが、これさえ知っておけばあとは応用でどうにかなります。


「今」の日付を確認してみる

  • Python
now = datetime.datetime.now()
print(now)
print(now.timestamp())
2024-04-26 22:31:25.627429
1714138285.627429

  • JavaScript
let now = new Date();
console.log(now);
console.log(now.getTime());
Fri Apr 26 2024 22:37:36 GMT+0900 (日本標準時)
1714138656650

で、気づくとこありません???
そう、timestamp()とか、getTime()とかの出力です。
流石に同時に出力は無理でしたが、数字を並べてみましょう。

1714138285.627429   (Python)
1714138656650           (JavaScript)

あれ、大半の桁が同じ・・・。
そう、上でMDNの文章を引用しましたが、いずれも1970年1月1日の0時0分0秒を基準にしてるんですね。
ただし、Pythonは単位が秒、JavaScriptはミリ秒ってところに気をつけてください。pythonは小数点以下が6桁あるのでマイクロ秒まで計算してるんですね。



ちょっと道を逸れてExcel

ちなみにエクセルはどうなっているかというと1900年1月1日が1で、日付が増えるごとに1増えるとか。

Python、JavaScript、Excelまじバラバラやん。w

一応試す
スクリーンショット 2024-04-30 22.55.54.png

文字列として2024年4月26日その右側のセルに=DATEVALUE(ひとつ左のセル)
出力は45408
ちなみに小数点があると時間を表現できるんだと。1/24が1時間分で、1/(24*60)が1分ぶん。

ここまで三つの言語ともにバラバラ。ああ、めんどい。まじめんどい。



大事なこと

大事なことはdatetimeってのは言語によって設定が違うし、バラバラだし、
でも、どっかに基準の日時があって、数える単位も違うんだけど、時間が経つとカウントアップしていく

そんな感じのことを理解しおけばいいってことよね?(PythonとJavaScriptとExcelだけで偉そうなこと言ってる。w)

と言うことで・・・

今日は酔ってしまったので、具体的な使い方はその2以降で紹介できれば(私が復習できれば)と思っています。
楽しかった日はお酒が美味しいので酔ってしまうのは仕方がない・・・うん、仕方がない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0