JavaScriptの日付をPythonの日付オブジェクトに変換する方法
JavaScriptの日付をPythonの日付オブジェクトに変換したくなる場面は、主にAJAXリクエストやNode.jsのIPCメッセージなど、ネットワーク経由でデータを送受信するときです。この場合、日付は文字列形式で表現され、任意のフォーマットで送信することができます。
Python側ではstrptime()関数を使って、受け取った文字列を再び日付オブジェクトとして解析(パース)できます。また、ISO 8601のように標準化された形式で日付・時刻をやり取りするのがベストプラクティスです。ここでは、シンプルな例を使って具体的な手順を見ていきましょう。
基本の変換例
import datetime
# JavaScriptから受け取る日付文字列
date_string = '2017-12-31'
date_format = '%Y-%m-%d'
try:
date_obj = datetime.datetime.strptime(date_string, date_format)
print(date_obj)
except ValueError:
print("Incorrect data format, should be YYYY-MM-DD")出力結果
2017-12-31 00:00:00
補足:ISO 8601形式ならもっと簡単
もしJavaScript側で toISOString() を使って「2025-01-15T09:30:00.000Z」のようなISO 8601形式の文字列を送っている場合は、Python 3.7以降であれば fromisoformat() を使う方法もあります(ミリ秒やZサフィックスを含む場合は事前に整形が必要です)。
import datetime iso_string = '2025-01-15T09:30:00' date_obj = datetime.datetime.fromisoformat(iso_string) print(date_obj) # 2025-01-15 09:30:00
strptime()で使える書式指定子一覧
strptime()では、さまざまな書式指定子(ディレクティブ)を組み合わせて日付文字列を解析できます。主な指定子は以下の通りです。
| 指定子 | 意味 |
| %a | ロケールにおける曜日の省略名(例:Mon) |
| %A | ロケールにおける曜日の完全名(例:Monday) |
| %b | ロケールにおける月名の省略形(例:Jan) |
| %B | ロケールにおける月名の完全形(例:January) |
| %c | ロケールに適した日付と時刻の表現 |
| %d | 月内の日を10進数で表現[01〜31] |
| %H | 時(24時間制)を10進数で表現[00〜23] |
| %I | 時(12時間制)を10進数で表現[01〜12] |
| %j | 年内の通算日を10進数で表現[001〜366] |
| %m | 月を10進数で表現[01〜12] |
| %M | 分を10進数で表現[00〜59] |
| %p | ロケールにおけるAM/PM相当の表現 |
| %S | 秒を10進数で表現[00〜61] |
| %U | 年内の週番号(日曜を週の始まりとする)[00〜53]。最初の日曜より前の日は第0週として扱われます |
| %w | 曜日を10進数で表現[0(日曜)〜6] |
| %W | 年内の週番号(月曜を週の始まりとする)[00〜53]。最初の月曜より前の日は第0週として扱われます |
| %x | ロケールに適した日付の表現 |
| %X | ロケールに適した時刻の表現 |
| %y | 世紀を含まない年を10進数で表現[00〜99] |
| %Y | 世紀を含む年を10進数で表現(例:2025) |
| %Z | タイムゾーン名(タイムゾーンが存在しない場合は空文字列) |
| %% | リテラルの「%」文字そのもの |
まとめ
JavaScriptとPythonの間で日付をやり取りする際は、文字列形式で送信し、Python側でstrptime()やfromisoformat()を使って解析するのが基本です。特に特別な理由がない限り、タイムゾーン情報を持つISO 8601形式を採用することで、フォーマットの不一致によるバグを防ぎやすくなります。
-
Excelでシリアル番号を日付に変換する方法|セルの書式設定を使った簡単な手順
Excelの日付・時刻関数を使おうとしたのに、日付ではなくシリアル番号が表示されて戸惑ったことはありませんか?これは、Excelが内部的に日付や時刻をシリアル番号(連続した数値)として保存しているためです。たとえば、画面上では「2021/7/25」のように見える日付も、バックエンドでは単なる数値として記録されています。 Excelでシリアル番号を日付形式に変換する方法 Microsoft Excelには、数値を日付に変換する機能が標準で備わっており、操作はとても簡単です。ここでは、シリアル番号を日付形式に変換する具体的な手順を解説します。 書式を変更したいセルを選択します。 「ホーム」タブの
-
Pythonで10進数を2進数に変換する方法|再帰処理とbin()関数の実装例
この記事では、「10進数を2進数に変換する」という問題に対する解決策を、具体的なコード例とともにわかりやすく解説します。 問題の概要 問題: 与えられた10進数の整数を、それに対応する2進数表現へ変換する。 この問題を解くには、大きく分けて2つのアプローチがあります。順番に見ていきましょう。 方法1:再帰を使った実装 10進数を2進数に変換する基本的な考え方は、「数値を2で割り続け、その余りを記録する」ことです。再帰関数を使うと、除算を繰り返しながら余りを自動的に上位の桁から順に出力できます。 サンプルコード def DecimalToBinary(num): if num &g