日常生活では、日付と時刻を表すためにさまざまな形式を使用できます。たとえば、2022 年 7 月 4 日、3 月 8 日、22:00、2022 年 12 月 31 日、23:59 などです。 :59。整数と文字列の組み合わせを使用したり、浮動小数点数を使用して日や分などを表すこともできます。時間を表すさまざまな方法は本当に素晴らしいです。
しかし幸いなことに、Python には datetime モジュールがあり、日付と時刻を表すオブジェクトを簡単に操作できるようになります。
今日の記事では、次のことを学びます:
- Python で datetime モジュールを使用する方法
- Python 日時関数を使用して文字列を日時オブジェクトに変換する (またはその逆)
# 日時オブジェクトから日付と時刻を抽出する
- date は日付オブジェクトを操作します
# From the datetime module import date from datetime import date # Create a date object of 2000-02-03 date(2022, 2, 3)Output:
datetime.date(2022, 2, 3)上記のコードでは、モジュールから date クラスを取得し、2022 年 2 月 3 日の datetime.date オブジェクトを作成しました。このオブジェクトの作成に使用される数値のシーケンスは ISO 8061 とまったく同じであることに注意してください (ただし、0 は省略し、1 桁の月と日のみを記述しています)。
# Create a date object of 2000-26-03 date(2000, 26, 3)出力:
--------------------------------------------------------------------------- ValueErrorTraceback (most recent call last) Input In [2], in 1 # Create a date object of 2000-26-03 ----> 2 date(2000, 26, 3) ValueError: month must be in 1..12us ValueError の取得: 月は 1..12 である必要があります。カレンダーには 26 番目の月がないことは間違いなく、例外がスローされます。
# From the datetime module import time from datetime import time # Create a time object of 05:35:02 time(5, 35, 2)出力:
datetime.time(5, 35, 2)次に、両方の日付が含まれている場合はどうなるでしょうか。そして時間は? datetime クラスを使用する必要があります。
# From the datetime module import datetime from datetime import datetime # Create a datetime object of 2000-02-03 05:35:02 datetime(2000, 2, 3, 5, 35, 2)Output:
datetime.datetime(2000, 2, 3, 5, 35, 2)予想どおり、datetime オブジェクトが正常に作成されました。キーワード引数をより明示的に datetime コンストラクターに渡すこともできます。
datetime(year=2000, month=2, day=3, hour=5, minute=35, second=2)Output:
datetime.datetime(2000, 2, 3, 5, 35, 2)3 つのパラメーター (年、月、日) のみを渡す場合、エラーは報告されますか?
# Create a datetime object of 2000-02-03 datetime(2000, 2, 3)出力:
datetime.datetime(2000, 2, 3, 0, 0)オブジェクト内に時間と分を表す 2 つのゼロがあることがわかります。秒も省略されています。
# Time at the moment now = datetime.now() nowOutput:
datetime.datetime(2022, 8, 1, 0, 9, 39, 611254)datetime オブジェクトが取得されます。最後の数値はマイクロ秒です。
today = date.today() today出力:
datetime.date(2022, 8, 1)時刻が必要な場合は、datetime.now() オブジェクトの時、分、秒のプロパティにアクセスし、それらを時刻コンストラクターに渡す必要があります。
time(now.hour, now.minute, now.second)Output:
datetime.time(11, 33, 25)isocalendar() 関数を使用して、datetime オブジェクトから週番号と日番号を抽出することもできます。 ISO 年、週番号、営業日番号を含む 3 項目のタプルが返されます。
# isocalendar() returns a 3-item tuple with ISO year, week number, and weekday number now.isocalendar()出力:
datetime.IsoCalendarDate(year=2022, week=7, weekday=1)ISO 形式では、週は月曜日に始まり、終了日曜日に終了します。曜日は 1 (月曜日) から 7 (日曜日) までの数字でエンコードされます。これらのタプル要素のいずれかにアクセスしたい場合は、括弧表記を使用する必要があります:
# Access week number week_number = now.isocalendar()[1] week_numberOutput:
7
从字符串中提取日期
在数据科学和一般编程中,我们主要使用以数十种不同格式存储为字符串的日期和时间,具体取决于地区、公司或我们需要的信息粒度。有时,我们需要日期和确切时间,但在其他情况下,我们只需要年份和月份。我们该如何从字符串中提取我们需要的数据,以便将其作为日期时间(日期、时间)对象来操作呢?
fromisoformat() 和 isoformat()
我们学习的第一个将日期字符串转换为日期对象的函数是 fromisoformat,我们这样称呼它是因为它使用 ISO 8601 格式(即 YYYY-MM-DD),让我们看一个例子:
# Convert a date string into a date object date.fromisoformat("2022-12-31")
Output:
datetime.date(2022, 12, 31)
ISO 格式也包含时间,但如果我们却不能将它传递给函数:
date.fromisoformat("2022-12-31 00:00:00")
Output:
--------------------------------------------------------------------------- ValueErrorTraceback (most recent call last) Input In [13], in ----> 1 date.fromisoformat("2022-12-31 00:00:00") ValueError: Invalid isoformat string: '2022-12-31 00:00:00'
当然,我们也可以进行逆向运算,将 datetime 对象转换为 ISO 格式的日期字符串,我们应该使用 isoformat():
# Convert a datetime object into a string in the ISO format date(2022, 12, 31).isoformat()
Output:
'2022-12-31'
strptime()
为了解决上述 ValueError 问题,我们可以使用 strptime() 函数,该函数可以将任意日期/时间字符串转换为日期时间对象。我们的字符串不一定需要遵循 ISO 格式,但我们应该指定字符串的哪一部分代表哪个日期或时间单位(年、小时等)。让我们看一个例子,首先,我们将使用严格的 ISO 格式将字符串转换为日期时间对象:
# Date as a string iso_date = "2022-12-31 23:59:58" # ISO format iso_format = "%Y-%m-%d %H:%M:%S" # Convert the string into a datetime object datetime.strptime(iso_date, iso_format)
Output:
datetime.datetime(2022, 12, 31, 23, 59, 58)
在第一行,我们创建一个日期/时间字符串。在第二行中,我们使用特殊代码指定字符串的格式,该代码包含一个百分号,后跟一个编码日期或时间单位的字符。最后,在第三行中,我们使用 strptime() 函数将字符串转换为日期时间对象。这个函数有两个参数:字符串和字符串的格式。
我们上面使用的代码还可以编码其他日期和时间单位,如工作日、月份名称、周数等。
代码 |
示例 |
说明 |
%A |
Monday |
完整的工作日名称 |
%B |
December |
全月名称 |
#%W | 2 | 週数 (月曜日は初日)############### 让我们再看几个使用其他格式的示例: # European date as a string european_date = "31-12-2022" # European format european_format = "%d-%m-%Y" # Convert the string into a datetime object datetime.strptime(european_date, european_format) Output: datetime.datetime(2022, 12, 31, 0, 0) 如上所示,字符串已成功转换,但还有额外的零表示时间字段,让我们看一个使用其他代码的示例: # Full month name date full_month_date = "12 September 2022" # Full month format full_month_format = "%d %B %Y" # Convert the string into a datetime object datetime.strptime(full_month_date, full_month_format) Output: datetime.datetime(2022, 9, 12, 0, 0) 还是可以正常转换,但是需要注意的是,我们定义的格式应该与日期字符串的格式相匹配。因此,如果我们有空格、冒号、连字符或其他字符来分隔时间单位,那么它们也应该在代码字符串中。否则,Python 将抛出 ValueError: # Full month name date full_month_date = "12 September 2022" # Wrong format (missing space) full_month_format = "%d%B %Y" # Convert the string into a datetime object datetime.strptime(full_month_date, full_month_format) Output: --------------------------------------------------------------------------- ValueErrorTraceback (most recent call last) Input In [18], in 5 full_month_format = "%d%B %Y" 7 # Convert the string into a datetime object ----> 8 datetime.strptime(full_month_date, full_month_format) File ~/coding/dataquest/articles/using-the-datetime-package/env/lib/python3.10/_strptime.py:568, in _strptime_datetime(cls, data_string, format) 565 def _strptime_datetime(cls, data_string, format="%a %b %d %H:%M:%S %Y"): 566 """Return a class cls instance based on the input string and the 567 format string.""" --> 568 tt, fraction, gmtoff_fraction = _strptime(data_string, format) 569 tzname, gmtoff = tt[-2:] 570 args = tt[:6] + (fraction,) File ~/coding/dataquest/articles/using-the-datetime-package/env/lib/python3.10/_strptime.py:349, in _strptime(data_string, format) 347 found = format_regex.match(data_string) 348 if not found: --> 349 raise ValueError("time data %r does not match format %r" % 350(data_string, format)) 351 if len(data_string) != found.end(): 352 raise ValueError("unconverted data remains: %s" % 353 data_string[found.end():]) ValueError: time data '12 September 2022' does not match format '%d%B %Y' 可以看到,即使缺少一个空格也可能导致错误! 将日期时间对象转换为字符串
|
以上が時間に夢中にならないようにするための 39 の Python Datetime の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

メモ帳++7.3.1
使いやすく無料のコードエディター
