Pythonで日時を文字列に変換する | プログラミング学習 初心者向け入門ガイド

ホーム › >>

Pythonで日時を文字列に変換する

記事掲載:https://laptrinhcanban.com/ja

Python で日時を文字列に変換する方法のチュートリアル。Python で strftime() メソッドを使用して日時情報を文字列に変換する方法と、オプションでその時間情報をさまざまな形式で表示する方法を学習します。また、このレッスンの後半で、python locale.setlocale(() 関数) を使用して、選択したタイム ゾーンに従ってその時間情報を表示する方法も学習します。


Python で datetime を文字列に変換し、その時間を Python でさまざまな型の文字列として表示できます。次に例を示します。

  • 2021-05-04 12:29:11
  • 2021/05/04
  • 2021年5月4日水曜日

また、指定された日付が年の何日、つまり何週目かを計算することもできます。また、指定されたタイム ゾーンに基づいて、日付の表示スタイルを英語からベトナム語に変更することもできます (たとえば、「2021 年 5 月 4 日木曜日」など)。

これらはすべて、Python で strftime() メソッドを使用して Python で日時を文字列に変換するだけで解決できます。

繰り返しますが、反対のことをしたい場合は、次の記事を参照してください: Pythonで文字列を日時に変換する

Pythonで日時を文字列に変換する

Pythonで日時を文字列に変換する構文

Python で日時を文字列に変換するには、次の構文で Python の strftime() メソッドを使用します。

datetime.strftime(format)

そこで:

  • datetimeは、時刻情報を保持する datetime クラスの datetime インスタンスです。
  • strftimeはメソッド名です。
  • formatは文字列 string の出力形式です。

Python 文字列の日付形式テーブル

文字列 string の出力形式は、次のpython string date format table を使用して指定されます。

フォーマット意味
%y2 桁の年 00, 01, …, 99
%Y4 桁の月 0001, 0002, …, 9999
%b月名の略称 Jan, Feb, …, Dec ※1
%B月の名前 January, February, …, December ※1
%m1月、2月、…、12
%d1 日目、2 日目、…、31 日目
%H時間 (24 時間) 00, 01, …, 23
%I時(12 時間) 00, 01, …, 11
%p午前または午後 1 ※1
%M分 00, 01, …, 59
%S秒 00, 01, …, 59
%fマイクロ秒 000000, 000001, …, 999999
%zタイムゾーン, +0000, -0400 etc
%Zタイムゾーン UTC, EST
%aSun, Mon, …, Satの略 ※1
%A平日 日曜日、月曜日、…、土曜日 ※1
%c日付と時刻を適切に表示する ※1
%x日付を適切に表示する ※1
%X時刻を適切に表示する ※1

※1: 設定したロケールに応じて値が適宜変化します。ロケールの指定方法については、以下を参照してください。

ここでは、次のように Python で日時を文字列に変換する方法の具体的な例を見ていきます。

Pythonで指定された時間を文字列に変換します

たとえば、次のような時間情報があります’2020/07/22 20:4:38’。

次のように、datetime.datetime() コンストラクターを使用して、上記の時刻情報を含む datetime インスタンスを作成します。

import datetime

mydt = datetime.datetime(2020, 7, 22, 20, 4, 38)
print(type(mydt))
print(mydt)
#>> <class 'datetime.datetime'>
#>> 2020-07-22 20:04:38

上記の mydtのdatetimeを作成した後、次のように Python で strftime() メソッドを使用して、この日時を Python の文字列に変換します。

dt_str =  mydt.strftime("%Y/%m/%d %a %H:%M:%S")
print(type(dt_str))
print(dt_str)
#>> <class 'str'>
#>> 2020/07/22 Wed 20:04:38

また、文字列の形式を変更して、日時を Python の文字列に変換すると、次の結果が得られます。

print(mydt.strftime('%Y-%m-%d %H:%M:%S'))
#>> 2020-07-22 20:04:38

print(mydt.strftime('%y%m%d'))
#>> 200722

print(mydt.strftime('%A, %B %d, %Y'))
#>> Wednesday, July 22, 2020

print (mydt.strftime( '日付 %d 月 %m 年 %Y' ))
#>> 2020 年 7 月 22 日

繰り返しますが、次のように Python で strftime() メソッドを使用する場合、文字列 string の形式を変更することで、指定された日付の年の通算日、通算週の序数を計算することもできます。

#年の日付の序数を計算する
print('通算日の序数',mydt.strftime('|%j'))
#>> 通算日の序数| 204

#年の週の序数を計算 (週は日曜日から始まる)
print('通算週の序数',mydt.strftime('|%U'))
#>> 通算週の序数| 29

#年の週の序数を計算 (週は月曜日から始まります)
print('通算月の序数',mydt.strftime('|%W'))
#>>通算月の序数| 29

Pythonで現在の時刻を文字列に変換するon

Python で現在の日時を取得するには、datetime.now() 関数を使用します。位置情報を取得したい場合、たとえば、ハノイの現在の時刻を 7 番目のタイム ゾーンで取得したい場合は、次のように記述します

import datetime

hanoi_time = datetime.timezone(datetime.timedelta(hours=7))
dt_now = datetime.datetime.now(hanoi_time)

print(type(dt_now))
print(dt_now)

#>> <class 'datetime.datetime'>
#>> 2021-05-06 09:28:37.759004+07:00

上記の現在の時刻情報を含むdatetime インスタンスを作成した後、次のようにPython で strftime() メソッドを使用して、この datetime を Python の文字列に変換します。

dt_str =  dt_now.strftime("%Y/%m/%d %a %H:%M:%S")
print(type(dt_str))
print(dt_str)
#>> <class 'str'>
#>> 2021/05/06 Thu 09:28:37

また、文字列の形式を変更して、日時を Python の文字列に変換すると、次の結果が得られます。

print(dt_now.strftime('%Y-%m-%d %H:%M:%S'))
#>> 2021-05-06 09:28:37

print(dt_now.strftime('%y%m%d'))
#>> 210506

print(dt_now.strftime('%A, %B %d, %Y'))
#>> Thu, May 06, 2021

print(dt_now.strftime( '日 %d 月 %m 年 %Y' ))
#>> 2021 年 5 月 6 日

Lại nữa, chúng ta cũng có thể tính số thứ tự của ngày trong năm, tuần trong năm của ngày hiện tại bằng cách thay đổi format của chuỗi string khi sử dụng phương thức strftime() trong python như sau:

#年間の日の序数を計算する
print('通算日の序数',dt_now.strftime('|%j'))
#>> 通算日の序数| 126

#年間通算週数(日曜日から始まる週)を計算
print('通算週の序数',dt_now.strftime('|%U'))
#>> 通算週の序数| 18

#年間通算週数(月曜から始まる週)を計算
print('通算週の序数',dt_now.strftime('|%W'))
#>> 通算週の序数| 18

datetime モジュールに加えて、strftime メソッド も time または date モジュールに組み込まれていることに注意してください 。

Python datetime でロケールを指定する

上記の形式の表では、※1のアクセント付きの列の日付値が指定されたロケールに応じて変化することが既にわかっています。たとえば、ベトナムでロケールを指定すると、値Mondayは に変更されThứ hai、日本でロケールを指定すると、値は次のように変更され月曜日ます。
Python の datetime でロケールを指定するには、次のように記述します。

import locale
locale.setlocale(locale.LC_ALL, ‘locale_value‘)

指定されたロケールのlocale_valueを決定します。
たとえば、日本のロケールは次のように指定します。

import locale
locale.setlocale(locale.LC_ALL, 'ja_JP.UTF-8')

またはベトナムでは:

import locale
locale.setlocale(locale.LC_ALL, 'vi_VN.UTF-8')

次のように、第 7 タイム ゾーンのベトナムで指定されたロケールで現在の時刻を表示する例を見てみましょう。

import datetime
import locale

locale.setlocale(locale.LC_ALL, 'vi_VN.utf8')

hanoi_tz = datetime.timezone(datetime.timedelta(hours=7))
dt = datetime.datetime.now(hanoi_tz)

print(dt.strftime("|%Y/|%m/|%d |%a |%H:|%M:|%S"))
#>> 2021/05/06 T5 07:00:17

print(dt.strftime("|%B |%d,|%Y |%p |%I:|%M:|%S:|%f|%z"))
#>> Tháng 5 06,2021,SA 07:00:17:777669+0900

9 番目のタイム ゾーンで日本のロケールを指定する場合の現在の時刻を示す別の例:

import datetime
import locale

locale.setlocale(locale.LC_ALL, 'ja_JP.UTF-8')

tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
dt = datetime.datetime.now(tokyo_tz)

print(dt.strftime("|%y/|%m/|%d |%A |%H:|%M:|%S"))
#>> 21/05/06 木曜日 09:00:17

print(dt.strftime("|%B |%d,|%Y |%p |%I:|%M:|%S|%z"))
#>> 05月 06,2021 午前 09:00:17+0900

print(dt.strftime("|%c"))
#>> 21/05/06 209:00:17

上記のコードは、マシンに既にインストールされている Python または Anaconda ソフトウェアで実行する必要があることに注意してください。このモジュールは、オペレーティング システムのクロックに設定した情報を取得する必要があるためです。たとえば、Paiza.io などのオンライン プラットフォームで上記のコードを実行すると、エラーが発生します。

まとめ

上記 Kiyoshi は、Python で datetime を string に変換する方法について説明しました。レッスンの内容をよりよく理解するために、今日の例を書き直す練習をしてください。

文字列と日時の間で変換したい場合は、 Python で文字列を日時に変換するの記事を参照してください。

URL Link

https://laptrinhcanban.com/ja/python/nhap-mon-lap-trinh-python/datetime-trong-python/chuyen-datetime-sang-string-trong-python/

この記事は役立つと思ったらいいね!とシェアをお願いします
">

ホーム  › >>

Profile
きよしです!笑

Author: Kiyoshi (Chis Thanh)

Kiyoshi was a former international student in Japan. After graduating from Toyama University in 2017, Kiyoshi is currently working as a BrSE in Tokyo, Japan.